天天看點

java爬蟲——工具

對于像我這樣懶惰的人,治療的最好方法就是強迫自己做一些事情!有人說過:堅持做一件事情超過21天,就能成為習慣。那麼就用寫部落格這種方式來改變自己的懶惰吧!

今年的10月份氣溫好像不同于往年,冷的特别早。坐在溫暖的工作間,突然有一股強烈的睡意,但是對面的上司就像每天定時叫我起床的鬧鐘一樣使我肆無忌憚的心理有所收斂。那就翻看手機吧,一個部落客的爬蟲部落格吸引了我,抱着死馬當活馬醫的心态(此時的我由于一些文章的影響變得異常急躁,對于自己技術水準的緩慢提升感到失望)讀了下去。我并沒有想過一口氣讀完這個系列的部落格,但是結果出人意料:在不到三個小時的時間内我居然讀完了。首先我非常感謝部落客以通俗易懂的方式講解了爬蟲方面的基礎知識,使我多年來模糊的知識明朗化;再次我要感謝部落客讓我明白了作為技術人,整理對于自身技術能理的提升具有重要的意義。那麼今天我就整理以下java爬蟲中常用的技術。

1)、jsoup

jsoup是一款java的html解析器,可直接解析某個url位址、html文本内容。它提供了一套非常省力的api,可通過dom,css以及類似于jQuery的操作方法來取出和操作資料。

1. 從一個URL,檔案或字元串中解析HTML;

2. 使用dom或css選擇器來查找、取出資料;

3. 可操作html元素、屬性、文本

以上是百科關于jsoup的總結。這徹底颠覆了我之前對jsoup的認識。之前我一直以為jsoup與httpclient有得一比,因為其可以解析一個url。如今看來jsoup的功能可能要比httpclient的功能廣,因為其不僅僅可以請求某個url,還可以對請求結果進行解析。關于jsoup的使用,可以參見 jsoup開發指南 。

其他可參考的網站有:

1、jsoup快速入門(https://www.yiibai.com/jsoup/jsoup-quick-start.html)

2、jsoup教程(https://www.sojson.com/tag_jsoup.html)

2)、httpclient

HttpClient是Apache Jakarta Common下的子項目,可以用來提供高效的、最新的、功能豐富的支援HTTP協定的用戶端程式設計工具包,并且它支援HTTP協定最新的版本和建議。

HTTP協定可能是現在Internet上使用得最多、最重要的協定了,越來越多的Java應用程式需要直接通過HTTP協定來通路網絡資源。雖然在JDK的java net包中已經提供了通路HTTP協定的基本功能,但是對于大部分應用程式來說,JDK庫本身提供的功能還不夠豐富和靈活。HttpClient是Apache Jakarta Common下的子項目,用來提供高效的、最新的、功能豐富的支援HTTP協定的用戶端程式設計工具包,并且它支援HTTP協定最新的版本和建議。HttpClient已經應用在很多的項目中,比如Apache Jakarta上很著名的另外兩個開源項目Cactus和HTMLUnit都使用了 HttpClient。現在HttpClient最新版本為HttpClient 4.5 .6(2015-09-11)。

以上關于httpclient的描述均摘自百科。

了解了這個工具的作用,對于開發,還需要研讀其幫助文檔,具體可參見其官方網站。這裡給出一個位址,但不保證可用,具體以最新的搜尋結果為準:http://hc.apache.org/

3)、htmlunit

htmlunit 是一款開源的java 頁面分析工具,讀取頁面後,可以有效的使用htmlunit分析頁面上的内容。項目可以模拟浏覽器運作,被譽為java浏覽器的開源實作。是一個沒有界面的浏覽器,運作速度迅速。是junit的擴充之一。

其采用的是Rhinojs引擎。模拟js運作。通常情況下,該項目用以對頁面(包括js)進行測試,實作網頁自動化測試。在小型爬蟲項目中,這種架構的應用十分常見,可以有效的分析出 dom的标簽,并且有效的運作頁面上的js以便得到一些需要執行js才能得到的值。

對于這些東西的總結,技術大牛會很不屑一顧,但是個人認為這種總結在個人技術能力的成長中很有必要。還勞煩諸位大神手下留情,口下留情!

繼續閱讀