網站爬取思路總結

1、建議
  • 1、簡單的一些靜態網站可以直接看Chrome裏面的Network請求分析獲得數據。
  • 2、還有一些動態的網站ajax請求,可以藉助一些工具進行分析,或者用selenium模擬瀏覽器行爲也行。
2、爬取步驟及思路
  • 1、確定要爬取的目標數據,逆向推理分析網站結構,選擇獲取頁面詳情的最優路徑:
    • (1)逆向推理分析網站結構:通過目標數據,逐步分析祖輩的url鏈接(ps:一般對首頁的url進行get請求,會得到一些需要的cookie參數)。
    • (2)選擇獲取頁面詳情的最優路徑: 一個頁面可能有多個路徑可以到達,在保證能夠拿到全量數據的情況下,優先選擇請求次數少的路徑。比如如下圖片中,可以按三種性質查詢獲得數據,通過分析,按地區總省查詢就能獲得全量數據。
      在這裏插入圖片描述
  • 2、藉助工具(如谷歌瀏覽器自帶的谷歌開發者工具、mitmproxy抓包工:具、postman測試數據等),分析請求和響應(ps:並不是所有工具都必須一起使用,如果通過第一個就可以分析獲得所要的數據,那麼後面就不用使用那些工具了)。
    • 谷歌開發者工具確定具體返回數據的url;mitmproxy查看隱藏的請求頭信息,測試url請求參數的關鍵性;postman驗證以上分析的請求
    • (1)谷歌開發者工具:詳細介紹見:https://www.html.cn/doc/chrome-devtools/https://leeon.gitbooks.io/devtools/content/ ; 通過打開谷歌開發者工具(鼠標右擊檢查),去查看哪個url能夠返回數據,它的請求方式是什麼,需要攜帶哪些參數,而這些參數往往影響的就是返回的數據的多少,拿最簡單的說,比如有的鏈接攜帶了page參數,那就是翻頁獲得每頁的數據。在這裏插入圖片描述
    • (2)mitimproxy抓包工具,具體使用見 https://blog.csdn.net/weixin_43411585/article/details/89211823 ;通過mitmproxy可以查看在谷歌瀏覽器當中隱藏的一些請求頭信息;也可以通過修改鏈接的參數進行測試,獲得一個請求鏈接的關鍵參數,哪些是必須的,比如缺少了這個關鍵參數後,返回的網頁數據就缺失了;還可以通過查看一個個請求鏈接,查看從哪個鏈接開始出現了哪些參數,進而呈現了所請求的參數。
      在這裏插入圖片描述
    • (3)Postman驗證前面自己分析的結果;使用方法見 https://www.jianshu.com/p/46d44c09d94c ;包括一些注意事項:https://www.jianshu.com/p/2bb34ab68bc3 ;比如我通過Chrome開發者工具或者mitmproxy確定了可以返回數據的url是什麼,它是請求方式,它需要帶的參數,它的請求頭信息;這時候就可以把這些數據放到postman裏面去測試驗證一下,是不是真的能夠返回數據。
      在這裏插入圖片描述
  • 3、針對反爬制定處理方法;有的網站具有反爬,諸如user-agent和referer檢測,cookie反爬、驗證碼反爬、IP限頻次,包括一些由網頁javaScript生成的隱藏參數的動態改變加密等。
    • (1)對於user-agent:創建一個列表,每次請求隨機替換 https://github.com/Shirmay1/Python/blob/master/Proxyip/useragent.py
    • (2)referer檢測,把請求頭裏面的refer放進去,主要告訴它我們是從哪個頁面訪問開始的
    • (3)對於cookie反爬,cookie有兩種方式生成,一種是瀏覽器請求,服務器返回響應中set-cookie而得的;另一種就是該網站裏面寫的代碼如javascript生成的cookie。前者可以通過requests請求,response.cookies獲得cookie;後者就比較麻煩,你可以要回到Chrome開發者工具裏面去找到生成cookie的js文件,把它保存到本機生成cookie信息。
      在這裏插入圖片描述
    • (4)對於驗證碼反爬,那就要破解驗證碼啦,可以自行百度看看破解驗證碼的思路;當然有的鏈接圖片的驗證碼是動態變化的,這時候可以攜帶cookie參數試試,或者其他必要的參數,保持請求的一致性。
    • (5)IP限制頻次,一個是爬的慢一點,或者每隔一段時間休息一下,再繼續爬,模擬的像一個正常用戶的訪問;第二個是加代理,用代理ip進行訪問。
    • (6)等等………………
  • 4、編寫代碼,調試bug,獲取數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章