爬取异步请求(XHR/JS)数据方法

概述

之前在做爬虫的时候,比如在爬取到https://www.1688.com/?spm=a261p.8650866.0.0.2dfa36c3tjLrCQ网页的时候,发现很多内容明明在浏览器看得见,但是请求下来的内容却没有,于是打开F12查看Network发现,如下:从这里我们就可以清楚的在xhr返回的header里面看到异步请求的url,这里我们直接访问该url(或者在preview里面可以看到返回的数据)可以看到返回的数据就是需要数据,也就是我们要爬的数据。接下来就是进行url格式分析,一般都会有规律可循。

问题窥探

其实会出现看得见,摸不着的情况下是因为网页的数据是异步加载的,所以在http抓到的网页是不包含在里面的。网页有些数据呈现是采非同步方式,会是在背景去送httprequest取得,再用ajax或其他把数据回填到网页上,这部分可以在F12的这里找找看可能会有数据,取不到数据有可能是他网页有作多次来回运算,才会呈现最终画面,可以从F12的Status Code看有没有redirect相关(ex 307)。

解决办法

如果单纯用console httprequest比较难(可能背后网页依赖浏览器的东西很多) 可以考虑用driver开启网页,并用Selenium套件操控driver。会省了很多破解时间。

详细方法见:

用C#+Selenium+ChromeDriver 爬取网页,完美模拟真实的用户浏览行为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值