爬取某站的文档 - 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数据还有一个文件名的问题,在第二层循环里去嵌套文件名。
分类:
Python爬虫吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)