在抓取動態頁面的時候會出現一些特殊的情況導致獲取json取得數據比較困難,這個時候只能使用其他的爬取自動化爬取方式,但是相對門檻比較高比較麻煩,所以對于一些特殊的情況可以采取一下半自動化的手段?--保存html后進行爬蟲。
例如現在我想爬取一個餓了么的店鋪里的商品信息和商品的價格
1.首先登陸餓了么的網頁端https://h5.ele.me/
2.登陸之后我們可以很明顯看到是手機端的頁面,按F12進入開發者模式(使用的是Chrome瀏覽器),點擊下圖紅框部分可以切換網頁和手機視圖瀏覽
3.之后選擇一家店進入。需要注意的是餓了么店鋪之間的差距其實還是比較大的,需要找一個商品數量較多,分級層數也比較多的店鋪來做測試
4.之后同樣右鍵查看源碼,直接找第一個商品的名稱,發現源碼中沒有對應的商品名稱,基本上可以確定是動態加載的頁面
5.按F12進入開發者界面,選擇XHR并刷新界面,按Ctrl+F查找商品名稱,根據返回的結果并查看對應的文件中的內容可以定位文件
多層下拉后可以找到對應的數據位置
6.目前看起來似乎還好,頁面中加載了所有的需要的數據,但是當接著
向下看就會有問題出現。例如這里選擇兒科用藥:
會發現一個頁面中對應的有多個動態加載文件,也就是說在下拉的過程中動態加載的。
7.這樣沒有辦法,去找一下請求URL有沒有規律吧。通過比較發現URL中前后差別較大而且無法找到固定的規律
在線文本比對工具:https://text-compare.com/
所以對于這樣的網站無法一個一個請求URL獲取數據,就可以先保存HTML文件到本地之后再解析
1.首先將網頁下拉到最后,右鍵保存網頁
2.打開下載的html文件,可以看到所有的數據已保留,這個時候就可以像普通的靜態網頁一樣解析即可。唯一的區別就是不是再用request去請求網頁解析,而是直接解析本地的html文件
這種方法算是無法爬取頁面的一個解決辦法,算是一個半自動化的方法。
相關源碼及文件可以關注公眾號:Romi的雜貨鋪,回復“餓了么商品爬蟲”獲取