• 爬取某站的文档 Python


    无聊做爬虫。。。

     1 import time
     2 import requests
     3 import re
     4 import json
     5 import os
     6 
     7 def downLoad():
     8     filePath = './爱取的目录/'
     9     if not os.path.exists(filePath):
    10         os.mkdir(filePath)
    11 
    12     fileNameSeries = 0  # 保存文件名的序号
    13     for page in range(1, 100, 6): # 通过开发者工具发现,每六张图片为一页
    14         time.sleep(2)
    15 
    16         # 获取时间戳
    17         now_time = int(time.time() * 1000)
    18         url = 'https://openapi.book118.com/getPreview.html'
    19 
    20         # 请求参数
    21         params = {
    22             "project_id": "1",
    23             "aid": "118224812",
    24             "t": "e59bbb0fde38d49330c6ad73bfa2dc16",
    25             "view_token": "4oyc32ydtaWz96_RZXtG8MDy3MNqf291",
    26             "page": f"{page}",
    27             # "callback": "jQuery18305316163349086906_1649661165343",
    28             "_": now_time,
    29         }
    30 
    31         # 请求头
    32         headers = {
    33             'Host':'openapi.book118.com',
    34             'Referer':'https://max.book118.com/',
    35             'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36',
    36         }
    37         response = requests.get(url=url, headers=headers, params=params)
    38         print(response.text)
    39         # exit()
    40         # 使用正则提取内容
    41         result = re.findall('jsonpReturn\((.*?)\)', response.text)[0]
    42         print(result)
    43         json_data = json.loads(result)
    44         print(json_data)
    45         # 提取json数据里的值
    46         need_data = json_data['data'] # 还是个字典,我们提取字典的值
    47         print(need_data)
    48         for value in need_data.values():
    49             fileNameSeries += 1 #  在循环之前自增1
    50             # 开始拼接url
    51             img_url = 'https:' + value
    52             print(img_url)
    53             # 请求图片的二进制数据
    54             img_content = requests.get(url=img_url).content
    55             # 文件名以fileNameSeries的内容进行保存
    56             img_name = str(fileNameSeries) + '.' + img_url.split('.')[-1]
    57             # 保存数据
    58             with open(filePath + img_name, mode='wb') as f:
    59                 f.write(img_content)
    60                 print(f'正在保存{img_url.split("/")[-1].split(".")[0]}')
    61         
    62 
    63 downLoad()

    这里就一个正则提取json数据还有一个文件名的问题,在第二层循环里去嵌套文件名。

  • 相关阅读:
    Linux 进程管理
    强大的bat文件搞定系统所有问题
    Java多线程设计要点
    Linux 内核
    Linux 文件和目录管理之列出、删除、复制、移动及改名
    命令dd 及简单应用
    Transferring Files with SFTP or SCP
    简述Linux文件搜索
    加强Eclipse代码自动提示的方法
    Cisco交换机配置新手篇之端口配置
  • 原文地址:https://www.cnblogs.com/mafu/p/16132065.html
Copyright © 2020-2023  润新知