天天看點

【網絡爬蟲】給關鍵字擷取百度知道搜尋資料的網絡爬蟲

簡單的通過關鍵字爬出百度知道的一些搜尋資料。

例如問題提問時間答案文本答案時間點贊數拍磚數回答人回答人級别搜尋的關鍵字等。

答案可以有多個每個問題有多個答案應都儲存。儲存資料在MySql中。

在這裡需要用到一個牛人的爬蟲架構

WebMagic

我用的是IEDA工具建立的是Maven項目。

要搞爬蟲一些基礎的學習是不可少的比如HTMLJSP等前台知識知道怎麼解析xml文檔(利用XPath)用開發工具(推薦Intellij IDEA)MySQLMaven也可以學習等等。

下面就開始講怎麼抓取百度知道的資料了。

【網絡爬蟲】給關鍵字擷取百度知道搜尋資料的網絡爬蟲

我們用百度知道搜尋的時候可以看位址欄

<a href="https://zhidao.baidu.com/search?ct=17&amp;pn=0&amp;tn=ikaslist&amp;rn=10&amp;word=%E7%A4%BE%E4%BF%9D%E8%BD%AC%E7%A7%BB&amp;fr=wwwt">https://zhidao.baidu.com/search?ct=17&amp;pn=0&amp;tn=ikaslist&amp;rn=10&amp;word=%E7%A4%BE%E4%BF%9D%E8%BD%AC%E7%A7%BB&amp;fr=wwwt</a>

這裡關鍵詞的變量名是word。那麼其他變量與值可以不用管它。

縮減一下位址

還有重要的一點是百度知道的html的編碼是GBK的注意編碼不要搞錯了。

這個時候我們就可以利用這個位址來進行一些事情了。

需要學會用浏覽器檢視網頁源碼哦。

【網絡爬蟲】給關鍵字擷取百度知道搜尋資料的網絡爬蟲

通過這種方式我們可以找出标題的規律進而通過XPath解析得到标題名

【網絡爬蟲】給關鍵字擷取百度知道搜尋資料的網絡爬蟲

這些資料(标題問題描述答案時間等)都是可以通過上面方式得到的

這裡有個小問題就是點贊數和拍磚數這樣是找不到正确的方式的因為那裡是動态生成。

在這裡做一個示範

【網絡爬蟲】給關鍵字擷取百度知道搜尋資料的網絡爬蟲

通過火狐浏覽器的檢視元素源碼是這樣的。

通過在位址欄前面加: view-source: 可以看網頁源碼。

一般點選滑鼠右鍵可以直接看網頁源碼。

【網絡爬蟲】給關鍵字擷取百度知道搜尋資料的網絡爬蟲

這個時候我們并不可以在源碼中看到剛剛的代碼。

也就是說我們抓取網頁的源碼的時候擷取到的html也是沒有那個的怎麼辦這個時候我們會發現

data-evaluate=”7”

正好與點贊數7一樣

繼續對比一下其他頁面會發現這個屬性的值就是點贊數

那麼好辦了通過XPath然後加工一下一樣可以擷取此值。

拍磚數一樣的分析然後擷取就行

至于其他的資料差不多都是這樣分析的。

開始本來想做成Web應用結果WebMagic爬蟲架構隻能在main線程才能運作是以就隻做了一個簡單的用main函數啟動的應用了。

用到了MyBatis和Spring。主要是為了操作資料庫簡單一點。

你可以不用架構的主要代碼隻有這個類的代碼

資料庫很簡單看你自己需要哪些資料就建立哪些字段和表就行。

【網絡爬蟲】給關鍵字擷取百度知道搜尋資料的網絡爬蟲

建立MySQL資料表的檔案在項目的src/main/resources/sql/1.sql

本篇部落格涉及到的源碼連結

歡迎轉載分享是進步的源泉。