Java網路爬蟲初體驗
一.什麼是爬蟲
引用百度百科的介紹:“網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或著蠕蟲”
以上介紹關鍵資訊:自動的抓取資訊的程式或指令碼。所以通俗的說網路爬蟲就是能夠在指定網路獲取指定型別資訊的程式或指令碼。
二.爬蟲能做什麼
1.搜尋引擎:搜尋引擎展示的大部分內容都是由爬蟲收集的各大網路內容
2.比價網站:現在電商十分發達,但是同一個商品在不同的電商平臺的售價其實是有差異,所有催生了很多比價網站,比如:折多多,返利網等等。這些網站實際上就是使用爬蟲在實時的監控各電商平臺的價格浮動。
3.其他各種資料統計分析,例如房價與地段關係分析,每天的熱點新聞型別分析等等
三.什麼語言能寫爬蟲
通過以上分析,我們可以發現爬蟲的作用非常大,不管是作為商業價值來看還是作為個人用途都會非常大的學習價值。
那麼哪種程式語言適合編寫爬蟲呢,我們逐一分析。
PHP:語言簡單,功能模組齊全,但是併發能力較弱
Python:各種爬蟲框架,多執行緒支援良好,GAE的支援
JAVA:相對指令碼語言比較麻煩,但是針對複雜的爬蟲系統有優勢。
C++:各種成本都比較高
通過以上分析可以看到,綜合來看Python應該最適合寫爬蟲的語言,而java則是最適合複雜爬蟲系統的語言。那麼這篇文章將帶領大家使用
四:必備知識點:URL
1.什麼是URL
爬蟲爬取內容其實都是到網頁中爬取,這個過程我們稱之為抓取網頁,而爬蟲抓取網頁其實
和我們平時使用IE瀏覽器瀏覽網頁的道理是一樣的。比如,在任何一個瀏覽器位址列輸入:http://www.itsource.cn
開啟網頁的過程其實就是瀏覽器作為客戶端向伺服器傳送請求,伺服器接收到請求後又響應相應的內容給瀏覽器,我們看到內容就是瀏覽器在接收到伺服器的響應內容後解析之後的效果。甚至我們都可以直接檢視伺服器相應過來的原始碼,以chrome為例,直接在網頁上滑鼠右鍵:顯示網頁原始碼(如下圖)
將看到以下內容:
在上面的案例中,我們在瀏覽器位址列輸入的:http://www.itsource.cn 這個字串就是URL.
定義為:統一資源定位符
我在通過瀏覽器的看到所有內容都是存放在伺服器中的資源(比如:圖片、文字、視訊片段…),而如何指定要訪問的具體資源,便是使用URL來指定,這也是URL存在的意義,以及為什麼叫統一資源定位符,“資源”、“定位”兩個詞很關鍵
2.URL的語法格式:
URL由3部分組成:
1.協議(http),也有其他的協議,比如:https、ftp等
2.存放改資源的主機IP地址(www.itsource.cn為域名,會被DNS伺服器解析為該域名繫結的IP地址)。可以理解為找到具體的伺服器,但一個伺服器可能會有很多的資源
3.主機資源的具體地址。可以理解為指定伺服器中眾多資源中某一個
協議與IP地址使用://隔開,IP地址與具體資源使用/隔開
比如:http://www.itsource.cn/openClassWeb.htm,意為訪問原始碼時代的伺服器中的公開課網頁
五.抓取指定的URL網頁內容
上一節講到,通過在瀏覽器地址輸入URL其實就是抓取了一個具體的資源(網頁也是資源的一種),但是如果寫爬蟲程式還需要使用瀏覽器依次訪問的話,未免也太麻煩並且沒有意義。
而JAVA語言作為為網路而生的語言為爬蟲程式提供了相應的API:
java.net.URL類 抽象瀏覽器位址列的字串物件
建立物件: URL url = new URL(path); 例如:URL url = new URL(“http://www.itsource.cn”);
呼叫方法:InputStream stream = pageURL.openStream();//獲取URL對應具體資源的網路流
通過以上方法可以獲取具體資源的網路流,進而可以像操作本地資源一樣操作網路資源,但是在實際專案中僅僅使用URL是不夠的,還需要Apache提供的HTTP客戶端開源專案—
HttpClient,只需要匯入HttpClient.jar包就可以直接使用,以下為示範:
可以看到返回的http狀態碼為200,表示請求成功。這樣就成功的使用HttpClient API代替瀏覽器向伺服器成功發起了get請求。
今天就講解到這兒,我們已經可以成功的請求指定伺服器了,至於下一步如何從響應內容中抓取我們想要的內容,下一章再講解-原始碼時代Java學習