网页抓取神器hawk使用心得
(1)抓取目的
現在網站有大量數據,但網站本身并不提供api接口,如果要批量獲得這些頁面數據,必須通過網頁抓取方式實現。
比如某房產網站的二手房數據,在頁面上很整齊的展示,因此可以通過分析網頁的html源碼,找到總價、單價、位置、戶型等數據,并最終實現批量抓取。
(2)抓取原理
1)首先要獲取網頁的html源碼,這個并不難,在瀏覽器里右擊菜單里選擇“查看網頁源代碼”就能看到html源碼,頁面上能看到的文字基本在都在html源碼里。
2)得到html源碼后,就需要定位到各個數據的位置,比如“總價”,如下圖所示:
可以看到“560”在html里能找到。
同時可以得到“總價”這個字段的xpath:
/html/body/div[4]/div[1]/ul/li[8]/div[1]/div[6]/div[1]/span
我們可以把html看成是一個標簽樹,xpath就是在標簽樹的尋找路徑。
依此可以得到“單價”、“戶型”等字段的xpath,也就可以獲取1條發布信息的數據。
3)得到1條信息的數據后,一個頁面通常會顯示二三十條信息,可以發現這些信息的格式都是一致的,如下圖所示:
因此可以發現這些信息都在
/html/body/div[4]/div[1]/ul/
路徑下
第1條就是/html/body/div[4]/div[1]/ul/li[1]
第2條就是/html/body/div[4]/div[1]/ul/li[2]
……
基于此,通過基礎path+字段相對path就可以得到每個字段的絕對path,然后可以編程實現單個頁面的抓取功能了。
4)得到單個頁面的數據后,就可以實現多頁面抓取,假如網站有100頁數據,通過觀察網站地址url可以發現,一般第二頁就是 “xxx/page2”,第一百頁就是“xxx/page100”,因此這個也是很有規律的,修改下url就可以實現多頁面抓取了。
(3)hawk抓取
由于網頁抓取如此常見,可以在網上搜到大量的抓取軟件,并不一定需要自己再開發一個抓取軟件(寫一個抓取軟件不難,寫一個通用性強且好用的難),hawk就是一個相當好用的抓取軟件。
hawk的介紹頁面:
https://github.com/ferventdesert/Hawk
關于hawk的詳細介紹,可以看其主頁,這里說一下個人使用心得:
1)hawk包含”網頁采集器”和”數據清洗”兩個模塊,網頁采集用于定位各個字段的xpath,數據清洗用于抓取數據,并對各個字段做一定的處理,以及導出數據。
2)網頁采集器模塊很好用,輸入url得到網頁html源碼后,在“搜索字符”里輸入比較典型的搜索文本,比如“農光南路雙朝南兩居室”后,hawk會在html里搜索這個字符串,獲取xpath。
“添加字段”后,再點擊“手氣不錯”會自動搜索出每條信息里包含的所有字段值,這個功能真的很強大,有點人工智能的效果了,網頁采集工作一次完成。
3)數據清洗模塊也很好用,個人用了其中4個模塊
1 生成區間數 2 合并多列 3 從爬蟲轉換 4 寫入數據表
具體操作可觀看主頁提供的視頻教程,其中第三步“從爬蟲轉換”要設置網頁采集器的名稱(視頻少了這個步驟),最后導出到Excel表,得到想要的數據。
hawk這個軟件功能很全,而且界面操作方便,支持很多的數據模塊,推薦使用。
總結
以上是生活随笔為你收集整理的网页抓取神器hawk使用心得的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 向线程传递参数
- 下一篇: 初中经典几何题,95%的同学都不会做,高