利用haohedi的網頁爬蟲任務從網站上爬取數據

HHDI爬蟲任務配置說明html

1、 摘要正則表達式

爬蟲任務能夠從主流網站爬取相關數據存儲到目標數據庫表或者服務器本地文件夾spider-data中,支持以html和json的形式保存原網頁信息。chrome

2、 操做步驟數據庫

本文以安居客(https://yt.anjuke.com/sale/laishanqu/)網站爲對象進行配置說明講解。json

1. 建立網頁爬蟲任務網頁爬蟲

打開轉換任務 > 新建網頁爬蟲。瀏覽器

clipboard

圖1 進入網頁爬蟲頁面路徑服務器

2. 基礎信息配置網絡

按照頁面提示輸入基本信息,其中任務編號和任務名稱爲必填項。併發

clipboard[1]

圖2 基本信息頁面

3. 登陸信息配置(大部分網站可忽略此步)

登陸信息配置主要爲爬取網站用戶名、密碼和驗證碼等登陸信息。若是待爬取的網站信息不須要登陸,則能夠直接跳過該部分的信息配置,若是須要登陸,可參考以下配置過程:

一、 點擊登陸按鈕,進入到登陸頁面

clipboard[2]

圖3初始頁面信息

二、 根據以下操做獲取須要填寫的信息:

clipboard[3]

圖4登陸頁面信息

以上是獲取【登陸URL】和【登陸用戶字段】的操做過程(4步),其中的id:pwdUserNameIpt或者name: username可做爲【登陸用戶字段】信息,獲取其餘字段的操做都可參考該部分操做。配置結果參考以下:

clipboard[4]

圖5登陸信息配置頁面

4. 爬取頁面配置

爬取頁面配置是網頁爬蟲任務的主要配置項,主要配置入口頁URL、下一頁、詳情頁URL的爬取規則,配置好的規則以下圖所示:

clipboard[5]

配置詳解:

例如,咱們要爬取煙臺市萊山區的二手房信息,入口頁地址爲:https://yt.anjuke.com/sale/laishanqu/,以分頁列表方式顯示各個二手房的標題和摘要信息:

clipboard[6]

點擊某個房產信息標題後,咱們會進入該房產信息的詳情頁面,例:

https://yt.anjuke.com/prop/view/A1761882388?from=filter&spread=filtersearch&uniqid=pc5d26fdbf4bcb73.65789478&region_ids=5023&position=1&kwtype=filter&now_time=1562836415

此頁面顯示某房產的各項詳細信息,咱們要爬取的就是這些詳情頁裏邊的數據:標題、總價、小區、戶型、單價(下圖紅框中的數據)。

clipboard[7]

因此網頁爬蟲的爬取順序是:進入入口頁面->根據xpath找到列表頁區域->進入其中的一個詳情頁->爬取詳情頁面中的數據->返回以前的列表頁->爬取列表頁中剩餘的詳情頁信息->從入口頁找到下一頁->進入下一頁的列表頁->爬取下一頁中的全部詳情頁->爬取全部列表頁分頁中包含的詳情頁數據。

瞭解了這個順序,咱們依次來配置爬取頁面中的各項參數,

一、 配置入口頁面的url

入口頁填入:https://yt.anjuke.com/sale/laishanqu/。頁面編碼通常不選或選擇AUTO便可。

注意:暫不支持入口頁面中的列表頁url或詳情頁url是經過js、jsp等程序動態產生的數據。

二、 配置爬取區域(列表頁區域)的xpath

具體方法以下圖的步驟所示:

clipboard[8]

第5步便可獲取列表區域的xpath,設置xpath的目的是儘可能縮小選中的範圍,過濾掉不須要爬取的區域,並提升爬取效率,對於不少網站來說也能夠不設置xpath。

Xpath的獲取也能夠經過Xpath Helper插件完成,後邊有介紹。

三、 配置下一頁URL檢索規則

爬蟲會將入口頁及各列表頁中符合該正則表達式的URL放入下一頁的集合中,逐一進入爬取,此示例中下一頁的地址爲:

https://yt.anjuke.com/sale/laishanqu/p2/#filtersort

https://yt.anjuke.com/sale/laishanqu/p3/#filtersort

https://yt.anjuke.com/sale/laishanqu/p4/#filtersort

https://yt.anjuke.com/sale/laishanqu/p50/#filtersort

所以下一頁的正則表達式爲:

https://yt.anjuke.com/sale/laishanqu/p\d+/#filtersort

    其中\d+表明全部的數字。

四、 配置詳情頁URL檢索規則

和列表頁相似,只有符合詳情頁正則表達式的url纔會被爬蟲進入解析,觀察一下各個詳情頁url的特徵:

https://yt.anjuke.com/prop/view/A1763373777?from=filter&spread=commsearch_p&uniqid=pc5d27e258700744.44116158&region_ids=5023&position=1&kwtype=filter&now_time=1562894936

https://yt.anjuke.com/prop/view/A1747623437?from=filter&spread=commsearch_t&uniqid=pc5d27e3d252ff17.31797303&region_ids=5023&position=2&kwtype=filter&now_time=1562895314

咱們發現詳情頁url中紅色部分都是變化的信息,因此能夠用正則表達式的通配符來代替,正則表達式以下:

https://yt.anjuke.com/prop/view/.*\?from=filter&spread=commsearch_p&uniqid=.*&region_ids=\d+&position=\d+&kwtype=filter&now_time=\d+

注意:黃色背景中的\?表示須要將url中的?轉義爲\?,由於?也是正則表達式中的特殊字符。

5. 配置目標數據庫表和插入參數

clipboard[9]

       將爬取後的數據寫入目標數據鏈接的某張表中

6. 配置爬取字段

爬取詳情頁中的具體數據並將其寫入到目標表對應的字段中,以下所示,咱們須要爬取標題、房價、戶型、小區、單價這幾項信息

clipboard[10]

其中最重要的是如何獲取字段值的xpath,以「標題」爲例,咱們須要執行如下操做來獲取標題內容的xpath:

1) 在chrome瀏覽器中安裝xpath helper插件,如何安裝請參考該博客:

https://blog.csdn.net/love666666shen/article/details/72613143

2) 進入詳情頁後,按Ctrl+Shift+x呼出xpath helper的窗口,再按住Ctrl+Shift移動鼠標到要爬取的內容區域上,xpath helper窗口會顯示該區域的xpath全路徑:

clipboard[11]

3) 這樣便可得到「標題」項的xpath:

/html[@class='hb-loaded']/body/div[@id='container']/div[@id='content']/div[@class='clearfix title-guarantee']/h3[@class='long-title']

注意:須要將xpath中的紅色部分刪除直接寫/html/body,不然會解析不到數據,應變爲:

/html/body/div[@id='container']/div[@id='content']/div[@class='clearfix title-guarantee']/h3[@class='long-title']

或者寫成

//*[@id='container']/div[@id='content']/div[@class='clearfix title-guarantee']/h3[@class='long-title']

4) 將xpath和數據庫字段對應起來:

clipboard[12]

5) 將其它字段配置好。

7.   爬蟲參數配置

爬取參數用來配置爬蟲的一些參數信息,如重試次數、爬取間隔參數等

clipboard[13]

重試次數:有時網絡不穩定,可能會偶爾連不上頁面,該參數表示訪問失敗後的重試次數。

爬取間隔:爬取完一頁後,須要暫停多久再爬取下一個頁面,主要防止對網站過分頻繁的訪問。

運行線程數:爬蟲的併發線程個數。

超時時間:有時網站鏈接速度比較慢,日誌中常常出現read time out 超時的狀況,這時候須要調大超時時間,好比100秒,這樣這種錯誤就很是少了。

是否去除HTML標籤:爬蟲爬取的原始內容中會包含html中的一下標籤,好比<p><br>等,若是須要保留這些格式,可將選項配成N。

模擬瀏覽器標識:有些網站對瀏覽器版本有要求,該參數用來模擬某個版本的瀏覽器。

最大爬取記錄數:對於記錄數很是多的網站,在開始測試時,能夠經過該參數限定爬蟲最多能夠爬取的記錄條數。默認是0,不限制。

8.   保存並測試運行爬蟲任務

clipboard[14]

測試成功後,能夠將爬蟲任務編入做業流程中定時或手工執行。

相關文章
相關標籤/搜索