- 在上篇博客中總結了scrapy+selenium實戰,但是那樣在抓取大量數據時效率很慢,所以准備采取調用API的辦法進行抓取,本篇博客記錄scrapy調用API抓取信息實戰。
- 如何找到相關數據API:在想要抓取數據的當前網頁打開網頁抓包工具,選擇 network——>XHR后點開每個XHR選擇preview查看有沒有想要的數據,如果有想要的數據就點擊Headers查看API,那么這個網址就是我們想要的API,注意復制時?后面的不用復制,API為https://www.zkh.com/servezkhApi/search/1/product,在頁面中我們也可以看到請求頭Headers的相關參數等信息,大多數情況我們構造請求頭時只用到content-type就可以,content-length加了可能還會報錯(<twisted.python.failure.Failure twisted.internet.error.ConnectionLost: Connection to the other side was lost in a non-clean fashion: Connection lost.>)
另外請求需要的參數可以在Payload查看,復制其中的Request Payload並通過json.dumps(payload)構造發送請求時需要的參數,並修改其中參數的值就可以請求到想要的數據,參數錯誤時會出現返回數據為空的情況。
-
- 請求的結果需要用 json.loads(response.text)轉換成json格式的數據
- 學會了基於API的爬蟲后簡直像打開了新世界的大門,基本上最難的地方就是找API,構造Paylod參數時也要注意不要弄錯,同時在這里介紹一個極其好用的模擬發送請求的工具postman,當不確定自己的API能不能用就用這個進行測試,如果測試沒問題但是在scrapy中出現問題那就是程序的問題了,可能是paylod寫錯了,多了逗號、空格啥的。