ajax动态加载数据的抓取

本文详细介绍了Ajax异步加载的特点,包括检查页面源代码、观察局部请求和动态JS执行。针对动态加载页面的抓取流程,通过F12开发者工具进行HTTP请求监控,解析JSON响应数据。以小米应用商店为例,展示了如何分析请求URL和利用Python抓取数据。虽然Python无法执行JS,但可以模拟请求获取静态数据。
摘要由CSDN通过智能技术生成

ajax异步加载

特点

  1. 查看页面源代码,无数据一定是动态,有数据可能是静态或者抓包看有无XHR/对应的响应预览

  2. 局部请求加载数据,更新局部页面

  3. 请求返回页面包含动态js代码,浏览器解析执行js,动态的加载数据,直到页面渲染完成;
    若这类页面返回给python,就不能拿到数据,因为python无法执行js代码

  4. python 请求的内容写入文件,然后由浏览器打开,此时浏览器是加载不到动态数据的,此时有数据一定是静态页面。

看:
requests响应内容中是否有数据,有则静态页面
在这里插入图片描述

抓取流程

  1. F12抓包,页面发请求–>抓包

  2. 响应 j s o n 格 式 json格式 json的数据包
    XHR/General请求的url/QueryString规律

  3. 解析json字符串

import json
#解析json 字符串
dict_ = json.loads(res.text)
res.json()
json_str = json.dumps(dict_/list,ensure_ascii=False)
#从文件中解析
dict_ = json.load(f)#文件对象
json.dump(dict_,f,ensure_ascii=False)

案例

http://app.mi.com—>聊天社交—>应用名字&链接

1.请求http://app.mi.com,看是否有数据

import requests
headers = {"User-Agent":"xxx"}
url = "http://app.mi.com"

res = requests.get(url,headers=headers)#查看响应体中是否有社交类的数据

#没有则属于动态加载

#F12抓包--> XHR
#分析请求的url 结构
url1 = "https://app.mi.com/categotyAllListApi?page=0&categoryId=2&pageSize=30"
url2 = "https://app.mi.com/categotyAllListApi?page=1&categoryId=2&pageSize=30"
url3 = "https://app.mi.com/categotyAllListApi?page=2&categoryId=2&pageSize=30"
#发送请求,获取json数据

res = requests.get(url,headers=headers)
res.json()  #OK
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值