.使用 HttpClient 和 HtmlParser 實現簡易爬蟲

來源:互聯網
上載者:User

標籤:style   http   io   color   ar   os   使用   sp   java   

本小結簡單的介紹一下 HttpClinet 和 HtmlParser 兩個開源的項目,以及他們的網站和提供下載的地址。

  HttpClient 簡介

 HTTP 協議是現在的網際網路最重要的協議之一。除了 WEB 瀏覽器之外, WEB 服務,基於網路的應用程式以及日益增長的網路計算不斷擴充著 HTTP 協議的角色,使得越來越多的應用程式需要 HTTP 協議的支援。雖然 JAVA 類庫 .net 包提供了準系統, 來使用 HTTP 協議訪問網路資源,但是其靈活性和功能遠不能滿足很多應用程式的需要。而 Jakarta Commons HttpClient 組件尋求提供更為靈活,更加高效的 HTTP 協議支援,簡化基於 HTTP協議的應用程式的建立。HttpClient 提供了很多的特性,支援最新的HTTP 標準,可以訪問這裡瞭解更多關於 HttpClinet 的詳細資料。目前有很多的開源項目都用到了 HttpClient 提供的 HTTP功能,登陸網址可以查看這些項目。本文中使用 HttpClinet 提供的類庫來訪問和下載 Internet上面的網頁,在後續部分會詳細介紹到其提供的兩種請求網路資源的方法: Get 請求和 Post 請求。Apatche 提供免費的 HTTPClien t源碼和 JAR 包下載,可以登陸這裡 下載最新的HttpClient 組件。筆者使用的是 HttpClient3.1。

  HtmlParser 簡介

   當今的 Internet 上面有數億記的網頁,越來越多應用程式將這些網頁作為分析和處理的資料對象。這些網頁多為半結構化的文本,有著大量的標籤和嵌套的結構。當我們自己開發一些處理網頁的應用程式時,會想到要開發一個單獨的網頁解析器,這一部分的工作必定需要付出相當的精力和時間。事實上,做為 JAVA 應用程式開發人員,HtmlParser 為其提供了強大而靈活易用的開源類庫,大大節省了寫一個網頁解析器的開銷。 HtmlParser 是 http://sourceforge.net 上活躍的一個開源項目,它提供了線性和嵌套兩種方式來解析網頁,主要用於 html 網頁的轉換(Transformation)以及網頁內容的抽取(Extraction)。HtmlParser 有如下一些便於使用的特性:過濾器 (Filters),訪問者模式 (Visitors),處理自訂標籤以及便於使用的 JavaBeans。正如 HtmlParser 首頁所說:它是一個快速,健壯以及嚴格測試過的組件;以它設計的簡潔,程式啟動並執行速度以及處理 Internet 上真實網頁的能力吸引著越來越多的開發人員。本文中就是利用HtmlParser 裡提取網頁裡的連結,實現簡易爬蟲裡的關鍵區段。HtmlParser 最新的版本是HtmlParser1.6,可以登陸這裡下載其源碼、 API 參考文檔以及 JAR 包。


 簡單強大的 StringBean

 如果你想要網頁中去掉所有的標籤後剩下的文本,那就是用 StringBean 吧。以下簡單的代碼可以幫你解決這樣的問題:

  清單5

  StringBeansb = new StringBean();

  sb.setLinks(false);//設定結果中去點連結

  sb.setURL(url);//設定你所需要濾掉網頁標籤的頁面 url

  System.out.println(sb.getStrings());//列印結果

  HtmlParser 提供了強大的類庫來處理網頁,由於本文旨在簡單的介紹,因此只是將與筆者後續爬虫部分有關的關鍵類庫進行了樣本說明。感興趣的讀者可以專門來研究一下 HtmlParser 更為強大的類庫。

  簡易爬蟲的實現

  HttpClient 提供了便利的 HTTP 協議訪問,使得我們可以很容易的得到某個網頁的源碼並儲存在本地;HtmlParser提供了如此簡便靈巧的類庫,可以從網頁中便捷的提取出指向其他網頁的超連結。筆者結合這兩個開源包,構建了一個簡易的網路爬蟲。

  爬蟲 (Crawler) 原理

   學過資料結構的讀者都知道有向圖這種資料結構。如所示,如果將網頁看成是圖中的某一個節點,而將網頁中指向其他網頁的連結看成是這個節點指向其他節點的邊,那麼我們很容易將整個 Internet 上的網頁建模成一個有向圖。理論上,通過遍曆演算法遍曆該圖,可以訪問到Internet上的幾乎所有的網頁。最簡單的遍曆就是寬度優先以及深度優先。以下筆者實現的簡易爬蟲就是使用了寬度優先的爬行策略。

  圖 2. 網頁關係的建模圖

  簡易爬蟲實現流程

  在看簡易爬蟲的實現代碼之前,先介紹一下簡易爬蟲爬取網頁的流程。

http://c.tieba.baidu.com/p/3408961718
http://c.tieba.baidu.com/p/3408971171
http://c.tieba.baidu.com/p/3408978819
http://c.tieba.baidu.com/p/3408983919
http://c.tieba.baidu.com/p/3408987713
http://c.tieba.baidu.com/p/3408991963
http://c.tieba.baidu.com/p/3408996472
http://c.tieba.baidu.com/p/3409001170
http://c.tieba.baidu.com/p/3409005781
http://c.tieba.baidu.com/p/3409010342
http://c.tieba.baidu.com/p/3409015144
http://c.tieba.baidu.com/p/3409019913
http://c.tieba.baidu.com/p/3409024815
http://c.tieba.baidu.com/p/3409029758
http://c.tieba.baidu.com/p/3409034566
http://c.tieba.baidu.com/p/3409039584
http://c.tieba.baidu.com/p/3409044532
http://c.tieba.baidu.com/p/3409049586
http://c.tieba.baidu.com/p/3409054519
http://c.tieba.baidu.com/p/3409092339
http://c.tieba.baidu.com/p/3409071327
http://c.tieba.baidu.com/p/3409103494
http://c.tieba.baidu.com/p/3409108450
http://c.tieba.baidu.com/p/3409113377
http://c.tieba.baidu.com/p/3409118414
http://c.tieba.baidu.com/p/3409123357
http://c.tieba.baidu.com/p/3409128339
http://c.tieba.baidu.com/p/3409133208
http://c.tieba.baidu.com/p/3409138003
http://c.tieba.baidu.com/p/3409169910
http://c.tieba.baidu.com/p/3401329030
http://c.tieba.baidu.com/p/3379202187
http://c.tieba.baidu.com/p/3404894476
http://c.tieba.baidu.com/p/3406909576
http://c.tieba.baidu.com/p/3406914372
http://c.tieba.baidu.com/p/3406914946
http://c.tieba.baidu.com/p/3406916795
http://c.tieba.baidu.com/p/3406921339
http://c.tieba.baidu.com/p/3379078552
http://c.tieba.baidu.com/p/3406920477
http://c.tieba.baidu.com/p/3408735878
http://c.tieba.baidu.com/p/3408743663
http://c.tieba.baidu.com/p/3408744284
http://c.tieba.baidu.com/p/3408744762
http://c.tieba.baidu.com/p/3408745167
http://c.tieba.baidu.com/p/3408746075
http://c.tieba.baidu.com/p/3408746973
http://c.tieba.baidu.com/p/3408747256
http://c.tieba.baidu.com/p/3408747316
http://c.tieba.baidu.com/p/3408747796
http://c.tieba.baidu.com/p/3408748333
http://c.tieba.baidu.com/p/3408748673
http://c.tieba.baidu.com/p/3408749015
http://c.tieba.baidu.com/p/3408750253
http://c.tieba.baidu.com/p/3408750415
http://c.tieba.baidu.com/p/3408750875
http://c.tieba.baidu.com/p/3408751623
http://c.tieba.baidu.com/p/3408751925
http://c.tieba.baidu.com/p/3408752216
http://c.tieba.baidu.com/p/3408752771
http://c.tieba.baidu.com/p/3408753118
http://c.tieba.baidu.com/p/3408754309
http://c.tieba.baidu.com/p/3408754743
http://c.tieba.baidu.com/p/3408755041
http://c.tieba.baidu.com/p/3408755375
http://c.tieba.baidu.com/p/3408755719
http://c.tieba.baidu.com/p/3408756064
http://c.tieba.baidu.com/p/3408756387
http://c.tieba.baidu.com/p/3408756724
http://c.tieba.baidu.com/p/3408757082
http://c.tieba.baidu.com/p/3408757424
http://c.tieba.baidu.com/p/3408757823
http://c.tieba.baidu.com/p/3408758170
http://c.tieba.baidu.com/p/3408758494
http://c.tieba.baidu.com/p/3408758839
http://c.tieba.baidu.com/p/3408759225
http://c.tieba.baidu.com/p/3408759621
http://c.tieba.baidu.com/p/3408760030
http://c.tieba.baidu.com/p/3408760425
http://c.tieba.baidu.com/p/3408760804
http://c.tieba.baidu.com/p/3408761254
http://c.tieba.baidu.com/p/3408761690
http://c.tieba.baidu.com/p/3408762110
http://c.tieba.baidu.com/p/3408762553
http://c.tieba.baidu.com/p/3408763017
http://c.tieba.baidu.com/p/3408763466
http://c.tieba.baidu.com/p/3408763928
http://c.tieba.baidu.com/p/3408764456
http://c.tieba.baidu.com/p/3408764468
http://c.tieba.baidu.com/p/3408765000
http://c.tieba.baidu.com/p/3408765490
http://c.tieba.baidu.com/p/3408766037
http://c.tieba.baidu.com/p/3408766614
http://c.tieba.baidu.com/p/3408767244
http://c.tieba.baidu.com/p/3408767944
http://c.tieba.baidu.com/p/3408768646
http://c.tieba.baidu.com/p/3408769358
http://c.tieba.baidu.com/p/3408770073
http://c.tieba.baidu.com/p/3408770836
http://c.tieba.baidu.com/p/3408771618
http://c.tieba.baidu.com/p/3408773263
http://c.tieba.baidu.com/p/3408772451
http://c.tieba.baidu.com/p/3408774141
http://c.tieba.baidu.com/p/3408775072
http://c.tieba.baidu.com/p/3408776075
http://c.tieba.baidu.com/p/3408777106
http://c.tieba.baidu.com/p/3408778147
http://c.tieba.baidu.com/p/3396342442
http://c.tieba.baidu.com/p/3381905005
http://c.tieba.baidu.com/p/3408779283
http://c.tieba.baidu.com/p/3379475874
http://c.tieba.baidu.com/p/3404102550
http://c.tieba.baidu.com/p/3404106494
http://c.tieba.baidu.com/p/3404114264
http://c.tieba.baidu.com/p/3404117528
http://c.tieba.baidu.com/p/3404121853
http://c.tieba.baidu.com/p/3404139787
http://c.tieba.baidu.com/p/3404162264
http://c.tieba.baidu.com/p/3404167365
http://c.tieba.baidu.com/p/3408780395
http://c.tieba.baidu.com/p/3404182093
http://c.tieba.baidu.com/p/3404186454
http://c.tieba.baidu.com/p/3404218080
http://c.tieba.baidu.com/p/3404234012
http://c.tieba.baidu.com/p/3404397089
http://c.tieba.baidu.com/p/3408841663
http://c.tieba.baidu.com/p/3408839072
http://c.tieba.baidu.com/p/3408836550
http://c.tieba.baidu.com/p/3408834039
http://c.tieba.baidu.com/p/3408831624
http://c.tieba.baidu.com/p/3408829263
http://c.tieba.baidu.com/p/3408827111
http://c.tieba.baidu.com/p/3408824893
http://c.tieba.baidu.com/p/3408822658
http://c.tieba.baidu.com/p/3408820525
http://c.tieba.baidu.com/p/3408818529
http://c.tieba.baidu.com/p/3408816505
http://c.tieba.baidu.com/p/3408814527
http://c.tieba.baidu.com/p/3408812584
http://c.tieba.baidu.com/p/3408810545
http://c.tieba.baidu.com/p/3408808575
http://c.tieba.baidu.com/p/3408806672
http://c.tieba.baidu.com/p/3408804746
http://c.tieba.baidu.com/p/3408802832
http://c.tieba.baidu.com/p/3408800993
http://c.tieba.baidu.com/p/3408799236
http://c.tieba.baidu.com/p/3408797524
http://c.tieba.baidu.com/p/3408795872
http://c.tieba.baidu.com/p/3408794250
http://c.tieba.baidu.com/p/3408792666
http://c.tieba.baidu.com/p/3408791203
http://c.tieba.baidu.com/p/3408789795
http://c.tieba.baidu.com/p/3408788282
http://c.tieba.baidu.com/p/3408786883
http://c.tieba.baidu.com/p/3408785527
http://c.tieba.baidu.com/p/3406911722
http://c.tieba.baidu.com/p/3406910802
http://c.tieba.baidu.com/p/3406909896
http://c.tieba.baidu.com/p/3405044440
http://c.tieba.baidu.com/p/3405042451
http://c.tieba.baidu.com/p/3408784167
http://c.tieba.baidu.com/p/3404891064
http://c.tieba.baidu.com/p/3404886459
http://c.tieba.baidu.com/p/3404570261
http://c.tieba.baidu.com/p/3404563126
http://c.tieba.baidu.com/p/3404550521
http://c.tieba.baidu.com/p/3382203031
http://c.tieba.baidu.com/p/3408782867
http://c.tieba.baidu.com/p/3404541723
http://c.tieba.baidu.com/p/3404521495
http://c.tieba.baidu.com/p/3404496080
http://c.tieba.baidu.com/p/3404465069
http://c.tieba.baidu.com/p/3404432477
http://c.tieba.baidu.com/p/3404427369
http://c.tieba.baidu.com/p/3408781615
http://c.tieba.baidu.com/p/3409040060
http://c.tieba.baidu.com/p/3409034973
http://c.tieba.baidu.com/p/3409030141

.使用 HttpClient 和 HtmlParser 實現簡易爬蟲

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.