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