Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

網絡爬蟲框架

寫網絡爬蟲,一個要有一個邏輯順序。本文主要講解我自己經常使用的一個順序,並且本人經常使用這個框架來寫一些簡單的爬蟲,複雜的爬蟲,也是在這個基礎上添加其他程序。

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

首先,我的工程都是使用maven建的。使用Spring MVC框架編寫過網站的同學,可以看出框架的重要性與邏輯性。在我的網絡爬蟲框架中,包含的package有db、main、model、parse、util五個文件。

db:主要放的是數據庫操作文件,包含MyDataSource【數據庫驅動註冊、連接數據庫的用戶名、密碼】,MYSQLControl【連接數據庫,插入操作、更新操作、建表操作等】。

model:用來封裝對象,比如我要獲取京東書籍的ID、書名、價格,則需要在model寫入對應的屬性。說的直白一些,封裝的就是我要操作數據對應的屬性名。

util:主要放的是httpclient的內容,主要作用時將main方法,傳過來的url,通過httpclient相關方法,獲取需要解析的html文件或者json文件等。

parse:這裡面存放的是針對util獲取的文件,進行解析,一般採用Jsoup解析;若是針對json數據,可採用正則表達式或者fastjson工具進行解析,建議使用fastjson,因其操作簡單,快捷。

main:程序起點,也是重點,獲取數據,執行數據庫語句,存放數據。

網絡爬蟲的邏輯順序

針對我的網絡爬蟲框架,網絡爬蟲的邏輯順序,可以描述為:首先,main方法,將url傳給util獲取響應的html文件,然後util將其獲得的html文件,傳給parse進行解析,獲取最終數據,封裝在集合中。解析完畢後,數據返回到main,接著main操作db將數據導入到mysql中。

網絡爬蟲實例教學

通過上面的框架,我們可以看出寫一個網絡爬蟲,其實很簡單(當然有很複雜的網絡爬蟲哦)。下面,我將帶大家寫一個基於java爬蟲京東圖書信息的網絡爬蟲,只是做講解使用,供大家學習和參考。

首先,起點是什麼?你可能覺得是main方法,其實不然,起點是你要知道你要獲取網站中的哪些數據,然後針對要抓取的數據去寫model。如下圖,我要獲取京東上的圖書的價格,和圖書名,還有圖書的id(id是唯一標識,可作為數據表的主鍵)

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

model

用來封裝對象,我要抓取一本書的數據包括,書籍的id,書名及價格。ecliplse中生成set、get方法的快捷鍵是shift+alt+s然後選擇生成setter、getter

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

main

主方法,儘量要求簡單,這裡我就這樣寫了。這裡面有註釋,很好理解。

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

util

util中包含兩個文件,URLFecter 與HTTPUtils,其中URLFecter 調用了HTTPUtils類。

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

上面程序調用的HTTPUtils這個類,以下是HTTPUtils這個類。

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

parse

parse主要是通過Jsoup來解析html文件。並將解析後的數據,封裝在List集合中,將數據通過層層返回到main方法中。

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

db

db中包含兩個java文件,MyDataSource,MYSQLControl。這兩個文件的作用已在前面說明了。

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

下面是MYSQLControl,主要使用QueryRunner方法操作數據庫,使用時是batch方法。

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

再看main方法

在main方法中有這樣一句程序,這便是調用了操作數據庫MYSQLControl程序,將抓取的數據插入到數據庫中了

MYSQLControl.executeInsert(bookdatas);

爬蟲效果展示

到此,便完成了這個簡單網絡爬蟲的編程工作,下面來看看程序運行的結果吧。

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

數據庫中的結果如下:

Java爬蟲入門實戰:簡單幾步爬取京東圖書信息

(完)

PS:如果覺得我的分享不錯,歡迎大家隨手點贊、轉發。


分享到:


相關文章: