概述
之前在做爬虫的时候,比如在爬取到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 爬取网页,完美模拟真实的用户浏览行为