javascript
爬取异步请求(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 爬取網頁,完美模擬真實的用戶瀏覽行為
總結
以上是生活随笔為你收集整理的爬取异步请求(XHR/JS)数据方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NET问答: 如何迭代 Enum ?
- 下一篇: ASP.NET Core 集成 Rea