麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

網絡爬蟲(網絡蜘蛛)之網頁抓取

2019-11-17 03:26:42
字體:
來源:轉載
供稿:網友

現在有越來越多的人熱衷于做網絡爬蟲(網絡蜘蛛),也有越來越多的地方需要網絡爬蟲,比如搜索引擎、資訊采集、輿情監測等等,諸如此類。網絡爬蟲涉及到的技術(算法/策略)廣而復雜,如網頁獲取、網頁跟蹤、網頁分析、網頁搜索、網頁評級和結構/非結構化數據抽取以及后期更細粒度的數據挖掘等方方面面,對于新手來說,不是一朝一夕便能完全掌握且熟練應用的,對于作者來說,更無法在一篇文章內就將其說清楚。因此在本篇文章中,我們僅將視線聚焦在網絡爬蟲的最基礎技術——網頁抓取方面。

說到網頁抓取,往往有兩個點是不得不說的,首先是網頁編碼的識別,另外一個是對網頁腳本運行的支持,除此之外,是否支持以POST方式提交請求和支持自動的cookie管理也是很多人所關注的重要方面。其實java世界里,已經有很多開源的組件來支持各種各樣方式的網頁抓取了,包括上面提到的四個重點,所以說使用Java做網頁抓取還是比較容易的。下面,作者將重點介紹其中的六種方式。

 

HttpClient
HttpClient 是 Apache Jakarta Common 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,并且它支持 HTTP 協議最新的版本和建議。
以下列出的是 HttpClient 提供的主要的功能,要知道更多詳細的功能可以參見 HttpClient 的主頁。
 (1)實現了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
 (2)支持自動轉向
 (3)支持 HTTPS 協議
 (4)支持代理服務器

   (5)支持自動的Cookies管理等

Java爬蟲開發中應用最多的一種網頁獲取技術,速度和性能一流,在功能支持方面顯得較為底層,不支持JS腳本執行和CSS解析、渲染等準瀏覽器功能,推薦用于需要快速獲取網頁而無需解析腳本和CSS的場景。

范例代碼如下:

package cn.ysh.studio.crawler.httpclient;import org.apache.http.client.HttpClient;import org.apache.http.client.ResponseHandler;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.BasicResponseHandler;import org.apache.http.impl.client.DefaultHttpClient;/** * 基于HtmlClient抓取網頁內容 * * @author www.yshjava.cn */publicclassHttpClientTest{publicstaticvoid main(String[] args)throwsException{//目標頁面String url ="http://www.yshjava.cn";//創建一個默認的HttpClientHttpClient httpclient =newDefaultHttpClient();try{//以get方式請求網頁http://www.yshjava.cnHttpGet httpget =newHttpGet(url);//打印請求地址System.out.PRintln("executing request "+ httpget.getURI());//創建響應處理器處理服務器響應內容ResponseHandlerresponseHandler=newBasicResponseHandler();//執行請求并獲取結果String responseBody = httpclient.execute(httpget, responseHandler);System.out.println("----------------------------------------");System.out.println(responseBody);System.out.println("----------------------------------------");}finally{//關閉連接管理器            httpclient.getConnectionManager().shutdown();}}}

 

Jsoup
jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數據。

網頁獲取和解析速度飛快,推薦使用。
 主要功能如下:
 1. 從一個URL,文件或字符串中解析HTML;
 2. 使用DOM或CSS選擇器來查找、取出數據;
 3. 可操作HTML元素、屬性、文本;

范例代碼如下:

package cn.ysh.studio.crawler.jsoup;import java.io.IOException;import org.jsoup.Jsoup;/** * 基于Jsoup抓取網頁內容 * @author www.yshjava.cn */publicclassJsoupTest{publicstaticvoid main(String[] args)throwsIOException{//目標頁面String url ="http://www.yshjava.cn";//使用Jsoup連接目標頁面,并執行請求,獲取服務器響應內容String html =Jsoup.connect(url).execute().body();//打印頁面內容System.out.println(html);}}

 

HtmlUnit
htmlunit 是一款開源的java 頁面分析工具,讀取頁面后,可以有效的使用htmlunit分析頁面上的內容。項目可以模擬瀏覽器運行,被譽為java瀏覽器的開源實現。這個沒有界面的瀏覽器,運行速度也是非常迅速的。采用的是Rhinojs引擎。模擬js運行。

網頁獲取和解析速度較快,性能較好,推薦用于需要解析網頁腳本的應用場景。

范例代碼如下:  

package cn.ysh.studio.crawler.htmlunit;import com.gargoylesoftware.htmlunit.BrowserVersion;import com.gargoylesoftware.htmlunit.Page;import com.gargoylesoftware.htmlunit.WebClient;/** * 基于HtmlUnit抓取網頁內容 * * @author www.yshjava.cn */publicclassHtmlUnitSpider{publicstaticvoid main(String[] s)throwsException{//目標網頁String url ="http://www.yshjava.cn";//模擬特定瀏覽器Firefox_3WebClient spider =newWebClient(BrowserVersion.FIREFOX_3);//獲取目標網頁Page page = spider.getPage(url);//打印網頁內容System.out.println(page.getWebResponse().getContentAsString());//關閉所有窗口        spider.closeAllWindows();}}

 


Watij

Watij(發音wattage)是一個使用Java開發的Web應用程序測試工具,鑒于Watij的簡單性和Java語言的強大能力,Watij能夠使您在真正的瀏覽器中完成Web應用程序的自動化測試。因為是調用本地瀏覽器,因此支持CSS渲染和JS執行。

網頁獲取速度一般,IE版本過低(6/7)時可能會引發內存泄露。

范例代碼如下:

package cn.ysh.studio.crawler.ie;import watij.runtime.ie.IE;/** * 基于Watij抓取網頁內容,僅限Windows平臺 * * @author www.yshjava.cn */publicclassWatijTest{publicstaticvoid main(String[] s){//目標頁面String url ="http://www.yshjava.cn";//實例化IE瀏覽器對象        IE ie =new IE();try{//啟動瀏覽器            ie.start();//轉到目標網頁            ie.goTo(url);//等待網頁加載就緒            ie.waitUntilReady();//打印頁面內容System.out.println(ie.html());}catch(Exception e){            e.printStackTrace();}finally{try{//關閉IE瀏覽器                ie.close();}catch(Exception e){}}}}

 

Selenium
Selenium也是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE、Mozilla Firefox、Mozilla Suite等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應用程序看是否能夠很好得工作在不同瀏覽器和操作系統之上。測試系統功能——創建衰退測試檢驗軟件功能和用戶需求。支持自動錄制動作和自動生成。Net、Java、Perl等不同語言的測試腳本。Selenium 是ThoughtWorks專門為Web應用程序編寫的一個驗收測試工具。

網頁獲取速度較慢,對于爬蟲來說,不是一個好的選擇。

范例代碼如下:

package cn.ysh.studio.crawler.selenium;import org.openqa.selenium.htmlunit.HtmlUnitDriver;/** * 基于HtmlDriver抓取網頁內容 * * @author www.yshjava.cn */publicclassHtmlDriverTest{publicstaticvoid main(String[] s){//目標網頁String url ="http://www.yshjava.cn";HtmlUnitDriver driver =newHtmlUnitDriver();try{//禁用JS腳本功能            driver.setJavascriptEnabled(false);//打開目標網頁            driver.get(url);//獲取當前網頁源碼String html = driver.getPageSource();//打印網頁源碼System.out.println(html);}catch(Exception e){//打印堆棧信息            e.printStackTrace();}finally{try{//關閉并退出                driver.close();                driver.quit();}catch(Exception e){}}}}

 

Webspec 

一個開源的帶有界面的Java瀏覽器,支持腳本執行和CSS渲染。速度一般。
 范例代碼如下:

package cn.ysh.studio.crawler.webspec;import org.watij.webspec.dsl.WebSpec;/** * 基于WebSpec抓取網頁內容 * * @author www.yshjava.cn */publicclassWebspecTest{publicstaticvoid main(String[] s){//目標網頁String url ="http://www.yshjava.cn";//實例化瀏覽器對象WebSpec spec =newWebSpec().mozilla();//隱藏瀏覽器窗體        spec.hide();//打開目標頁面        spec.open(url);//打印網頁源碼System.out.println(spec.source());//關閉所有窗口        spec.closeAll();}}


源碼下載:網絡爬蟲(網絡蜘蛛)之網頁抓取范例源碼


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 狠狠操夜夜爱 | 男女一边摸一边做羞羞视频免费 | 99精彩视频在线观看 | 欧美一级做一级爱a做片性 91在线视频观看 | 91精品国产综合久久久欧美 | 97黄色网| 久久精品日产高清版的功能介绍 | 国产精品嘿咻嘿咻在线播放 | 色女人在线 | 亚洲福利视 | 手机国产乱子伦精品视频 | 国产精品区一区二区三区 | a一级黄色大片 | 九九午夜| 国产精品99爱 | 国产在线精品一区二区三区 | 最新中文字幕日本 | 国产精品久久久久久久久久电影 | 国产成人精品一区二区视频免费 | 一区二区三区欧美在线 | 福利在线小视频 | 国产做爰全免费的视频黑人 | 色999中文字幕 | 欧美亚洲免费 | 姑娘第四集免费看视频 | 欧美一级理论 | 国产精品欧美日韩一区二区 | 2019天天干夜夜操 | 成人在线视频免费观看 | 精品一区二区在线视频 | 久久久久久久久久网 | 香蕉成人在线观看 | 99精品视频免费看 | 免费久久久久 | 成人一区视频 | 黄色网址在线视频 | 亚洲精久久| 欧美一级免费视频 | 国产亚洲精品综合一区 | 国产乱弄 | 亚洲成人在线免费 |