Python web crawler(3)json异步加载的格式

异步加载的特点

  1. 点击“查看更多”等按钮,浏览器“刷新”按钮无反馈效果。
  2. 查看浏览器点击F12的“DevTools”开发者工具,点选“网络”——“Fetch/XHR”——每点击一次“加载更多”就会出现一次网络请求
  3. 点击刷新出来的“请求内容”——点击“响应”,可以看到响应的是“字典”
  4. 点击标头,查看请求格式“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
  1. 请求头部有“Referer:”就需要带着“Referer:”(这是防盗链),把它也放在headers里
  2. 一般情况下,我们都使用data = response.json() 直接返回字典  但是需要注意  如果返回数据中不是json数据 则会报错
  3. 你也可以用data = response.text 还需要json.loads()进行解码,记得使用import json导入模块
  4. 拿到字典里的列表后data['items']可以用以下代码方式,仅读取一条(退出for循环),方便对代码进行分析。
    data = response.json()
    print(data['items'])  # 获取当前字典里面的items数据
    
    # 测试没问题后,循环拿取需要的数据
    for line in data['items']:
        print(line)
        exit()
  5. 更重要的是配合“预览”功能,对JSON格式里的“字典”进行框架分析。
posted @ 2024-01-22 15:51  Magiclala  阅读(2)  评论(0编辑  收藏  举报