爬取某站的文档 - 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数据还有一个文件名的问题,在第二层循环里去嵌套文件名。

posted @   、一叶孤城  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示