Java 爬蟲學習

來源:互聯網
上載者:User

標籤:god   包括   ref   rstp   時間   語言   rip   post   面向   

Java爬蟲領域最強大的架構是JSoup:可直接解析具體的URL地址(即解析對應的HTML),提供了一套強大的API,包括可以通過DOM、CSS選取器,即類似jQuery方式來取出和操作資料。主要功能有:

  • 從給定的URL、檔案、字串中,獲得HTML代碼。
  • 然後通過DOM、CSS選取器(類jQuery方式)來尋找、取出資料:先找到HTML元素,然後擷取其屬性、文本等。

API初步學習:

上面提到了三種方式,擷取HTML文檔(JSoup的Document對象的結構是:<html><head></head><body></body></html>):

1、通過字串:String html="hello"; Document doc = Jsoup.parse(html);//(此時JSoup會把hello放在doc對象中的body中。如果字串是一個完整的html文檔,那麼doc對象將以字串的html結構為準)。

2、擷取URL的HTML文檔(注意:這種方式下,只有當調用get或post方法時,才真正發送請求):

//通過URL獲得串連:Connection對象Connection conn = Jsoup.connect("http://www.baidu.com");//以下為主要方法,多數返回Connectionconn.data("query", "Java");   // 請求參數conn.userAgent("I ’ m jsoup"); // 設定 User-Agent conn.cookie("auth", "token"); // 設定 cookie conn.timeout(3000);           // 設定連線逾時時間//發送請求,獲得HTML文檔:Document對象Document doc = conn.get();Document doc = conn.post();

擷取元素:

1、通過DOM方式(與純JavaScript方式相同):

//擷取文檔級資訊,如:String title = doc.title();//擷取單個HTML元素,如:<div id="content"></div>Element content = doc.getElementById("content");//擷取多個元素,如:<a href="http://www.qunyh.cn"></a> <a href="http://cn.bing.com"></a>Elements links = doc.getElementsByTag("a");

2、類似於jQuery的方式,這裡是將$換成了select方法:

//select的參數是類似於jQuery的選取器selectorElements allP = doc.select("p");Element firstP = allP.first();Element oneP = allP.get(1);//從0開始//操作元素:for (Element p : allP) {    //操縱元素:這裡就類似於jQuery    String text = p.text();}

當然JSoup只是模仿jQuery的方便性,並不具備jQuery的所有功能,例如jQuery的外掛程式肯定是無法在JSoup中使用。因此如果對JS掌握很好,選擇Node.js+MongoDB來處理就比較有優勢(即相互之間的支援度比較大)。如果熟悉Java,那麼就可以選擇JSoup+MySql+Quartz,也是非常好用的(全程java實現,省心方便),再配合Java調度器Quartz,就可實現一個完整的爬蟲了。

 

爬蟲架構 Gecco

Gecco 是用 Java 實現的,輕量化,面向主題的爬蟲,與 Nutch 這種面向搜尋引擎的通用爬蟲不同:

  • 通用爬蟲通常關注三個問題:下載、排序、索引。
  • 主題爬蟲則關註:下載、內容抽取、靈活的商務邏輯處理。

Gecco 的目標:提供一個完善的主題爬蟲架構:簡化下載和內容抽取的開發;利用管道過濾器模式,提供靈活的內容清洗和持久化處理模式。故而開發可以集中精力在業務主題方面的邏輯、內容處理。

學習一個架構,首先要瞭解到它的用途何在:

  • 簡單易用,使用 jQuery 的 Selector 風格抽取元素。
  • 支援頁面中的非同步 Ajax 請求
  • 支援頁面中的 JavaScript 變數抽取。
  • 利用 Redis 實現分布式抓取,可參考 Gecco-Redis。
  • 支援下載時 UserAgent 隨機選取。
  • 支援下載Proxy 伺服器隨機選取。
  • 支援結合 Spring 開發商務邏輯,參考 Gecco-Spring。
  • 支援 htmlUnit 擴充,參考 Gecco-htmlUnit。
  • 支援外掛程式擴充機制。

一分鐘你就可以寫一個簡單爬蟲

 

 

找資料的時候發現了新的、不錯的爬蟲架構(以後有時間嘗試):
Gecco Crawler:
Gecco是一款用java語言開發的輕量化的易用的網路爬蟲,不同於Nutch這樣的面向搜尋引擎的通用爬蟲,Gecco是面向主題的爬蟲。
https://github.com/xtuhcy/gecco
https://xtuhcy.gitbooks.io/geccocrawler/content/index.html
https://my.oschina.net/u/2336761/blog/688534
模板代碼產生器:J2ee template(由JSoup開發而成,可借鑒其如何開發的爬蟲):
https://www.oschina.net/p/jeetemp

Java 爬蟲學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.