Python web crawler(3)json异步加载的格式
异步加载的特点
- 点击“查看更多”等按钮,浏览器“刷新”按钮无反馈效果。
- 查看浏览器点击F12的“DevTools”开发者工具,点选“网络”——“Fetch/XHR”——每点击一次“加载更多”就会出现一次网络请求
- 点击刷新出来的“请求内容”——点击“响应”,可以看到响应的是“字典”
- 点击标头,查看请求格式“get”或者是“post”,以及请求刷新的“URL”
json文件异步加载格式
import requests
# 异步加载数据的接口
url = ''
headers = {
'User-Agent': '****************************',
'Cookie': '********************************',
'Referer': '*******************************',
}
response = requests.get(url, headers=headers)
data = response.json() # 会直接返回字典 但是需要注意 如果返回数据中不是json数据 则会报错
print(data['items']) # 获取当前字典里面的items数据
# 测试没问题后,循环拿取需要的数据
for line in data['items']:
try:
print(line['title'])
print(line['pic']['normal'])
print(line['uri'])
print("评分:", line['rating']['value'])
print(line['card_subtitle'])
print()
except:
pass
- 请求头部有“Referer:”就需要带着“Referer:”(这是防盗链),把它也放在headers里
- 一般情况下,我们都使用data = response.json() 直接返回字典 但是需要注意 如果返回数据中不是json数据 则会报错
- 你也可以用data = response.text 还需要json.loads()进行解码,记得使用import json导入模块
- 拿到字典里的列表后data['items']可以用以下代码方式,仅读取一条(退出for循环),方便对代码进行分析。
data = response.json() print(data['items']) # 获取当前字典里面的items数据 # 测试没问题后,循环拿取需要的数据 for line in data['items']: print(line) exit()
- 更重要的是配合“预览”功能,对JSON格式里的“字典”进行框架分析。