黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 教你使用Java制作網(wǎng)頁爬蟲

教你使用Java制作網(wǎng)頁爬蟲

更新時(shí)間:2022-10-12 11:19:10 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1695次

這篇文章展示了如何使用 Java 制作一個(gè)簡單的 Web 爬蟲原型。制作一個(gè)網(wǎng)絡(luò)爬蟲并不像聽起來那么困難。只需按照指南,您將在 1 小時(shí)或更短的時(shí)間內(nèi)快速到達(dá)那里,然后享受它可以為您獲取的大量信息。由于這只是一個(gè)原型,您需要花更多的時(shí)間來定制它以滿足您的需求。

以下是本教程的先決條件:

基本的Java編程

一點(diǎn)關(guān)于 SQL 和 MySQL 數(shù)據(jù)庫的知識(shí)。

如果不想使用數(shù)據(jù)庫,可以使用文件來跟蹤爬取歷史。

1. 目標(biāo)

在本教程中,目標(biāo)如下:

給定一個(gè)學(xué)校根 URL,例如“mit.edu”,返回該學(xué)校包含字符串“research”的所有頁面

典型的爬蟲按以下步驟工作:

解析根網(wǎng)頁(“mit.edu”),并從該頁面獲取所有鏈接。為了訪問每個(gè) URL 并解析 HTML 頁面,我將使用JSoup,它是一個(gè)用 Java 編寫的方便的網(wǎng)頁解析器。

使用從步驟 1 中檢索到的 URL,并解析這些 URL

在做上述步驟的時(shí)候,我們需要跟蹤之前處理過哪個(gè)頁面,這樣每個(gè)網(wǎng)頁只被處理一次。這就是我們需要數(shù)據(jù)庫的原因。

2.設(shè)置MySQL數(shù)據(jù)庫

如果您使用的是 Ubuntu,您可以按照本指南安裝 Apache、MySQL、PHP 和 phpMyAdmin。

如果您使用的是 Windows,則可以簡單地使用 WampServer。您可以從 wampserver.com 簡單地下載它并在一分鐘內(nèi)安裝它,然后就可以進(jìn)行下一步了。wampserver 。com并在一分鐘內(nèi)安裝它,很好地進(jìn)行下一步。

我將使用 phpMyAdmin 來操作 MySQL 數(shù)據(jù)庫。它只是一個(gè)使用 MySQL 的 GUI 界面。如果您使用任何其他工具或不使用 GUI 工具,那完全沒問題。

3.創(chuàng)建數(shù)據(jù)庫和表

創(chuàng)建一個(gè)名為“Crawler”的數(shù)據(jù)庫并創(chuàng)建一個(gè)名為“Record”的表,如下所示:

CREATE TABLE IF NOT EXISTS `Record` (
`RecordID` int(11) NOT NULL AUTO_INCREMENT,
`URL` text NOT NULL,
PRIMARY KEY (`RecordID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

4.使用Java開始爬取

(1)從 http://jsoup.org/download 下載 JSoup 核心庫。從 http://dev.mysql.com/downloads/connector/j/ 下載 mysql-connector-java-xxxbin.jarhttp :// jsoup 。組織/下載。http ://開發(fā)。mysql 。com /下載/連接器/ j /

(2)現(xiàn)在在您的 Eclipse 中創(chuàng)建一個(gè)名為“Crawler”的項(xiàng)目,并將您下載的 JSoup 和 mysql-connector jar 文件添加到 Java Build Path。(右鍵單擊項(xiàng)目-->選擇“構(gòu)建路徑”->“配置構(gòu)建路徑”->單擊“庫”選項(xiàng)卡->單擊“添加外部 JAR”)

(3)創(chuàng)建一個(gè)名為“DB”的類,用于處理數(shù)據(jù)庫操作。

導(dǎo)入 java.sql.Connection ;
導(dǎo)入 java.sql.DriverManager ;
導(dǎo)入 java.sql.ResultSet ;
導(dǎo)入 java.sql.SQLException ;
導(dǎo)入 java.sql.Statement ; 
公共 類數(shù)據(jù)庫{ 
	公共 連接conn =  null ; 
	公共數(shù)據(jù)庫() {
		嘗試 {
			類。forName ( "com.mysql.jdbc.Driver" ) ; 
			字符串url =  "jdbc:mysql://localhost:3306/Crawler" ; 
			conn = 驅(qū)動(dòng)程序管理器。getConnection (網(wǎng)址,“root”,“admin213” );
			系統(tǒng)。出來。println ( "conn built" ) ; 
		} 捕捉 (SQLException e ) { 
			e。打印堆棧跟蹤();
		} 捕捉 (ClassNotFoundException e ) { 
			e。打印堆棧跟蹤();
		} 
	} 
	public  ResultSet runSql ( String sql )  throws  SQLException  { 
		Statement sta = conn. 創(chuàng)建語句();
		返回站 執(zhí)行查詢( sql );
	} 
	public  boolean runSql2 ( String sql )  throws  SQLException  { 
		Statement sta = conn. 創(chuàng)建語句();
		返回站 執(zhí)行( sql );
	} 
	@覆蓋
	protected  void finalize ( )  throws  Throwable  { 
		if  ( conn !=  null  ||  ! conn.isClosed ( ) )  { conn 
			. 關(guān)閉( ) ; 
		} 
	} 
}

(4)創(chuàng)建一個(gè)名為“Main”的類,這將是我們的爬蟲。

導(dǎo)入 java.io.IOException ;
導(dǎo)入 java.sql.PreparedStatement ;
導(dǎo)入 java.sql.ResultSet ;
導(dǎo)入 java.sql.SQLException ;
導(dǎo)入 java.sql.Statement ;
導(dǎo)入 org.jsoup.Jsoup ;
導(dǎo)入 org.jsoup.nodes.Document ;
導(dǎo)入 org.jsoup.nodes.Element ;
導(dǎo)入 org.jsoup.select.Elements ;  
公共 類主{
	公共 靜態(tài)數(shù)據(jù)庫數(shù)據(jù)庫= 新數(shù)據(jù)庫(); 
	public  static  void main ( String [ ] args ) 拋出 SQLException , IOException  { 
		db. runSql2 ( "TRUNCATE 記錄;" ) ; 
		進(jìn)程頁面(“http://www.mit.edu” http :// www 。麻省理工學(xué)院 教育“);
	} 
	public  static  void processPage ( String  URL )  throws  SQLException , IOException { 
		//檢查給定的 URL 是否已經(jīng)在數(shù)據(jù)庫中
		String sql =  "select * from Record where URL = '" + URL + "'" ; 
		結(jié)果集rs = db。運(yùn)行Sql ( sql ) ; 
		if ( rs. next ( ) ) { 
		} else { 
			// 將 URL 存儲(chǔ)到數(shù)據(jù)庫以避免再次解析
			sql =  "INSERT INTO `Crawler`.`Record` "  +  "(`URL`) VALUES "  +  "(?);" ; 
			PreparedStatement stmt = db。康涅狄格州 prepareStatement ( sql ,Statement.RETURN_GENERATED_KEYS );_ 
			海峽 setString ( 1 , URL ) ; 
			海峽 執(zhí)行( ) ; 
			//獲取有用信息
			Document doc = Jsoup. 連接(“http://www.mit.edu/” http :// www 。麻省理工學(xué)院 教育/ ")。得到( ) ; 
			如果(文檔文本()。包含(“研究” )){
				系統(tǒng)。出來。println (網(wǎng)址) ; 
			}
			//獲取所有鏈接并遞歸調(diào)用processPage方法
			Elements questions = doc. 選擇(“a[href]” );
			for (元素鏈接:問題){
				如果(鏈接。attr (“href” )。包含(“mit.edu” )) 
					processPage (鏈接。attr (“abs:href” ));
			} 
		} 
	} 
}

現(xiàn)在您有了自己的網(wǎng)絡(luò)爬蟲。當(dāng)然,您需要過濾掉一些您不想抓取的鏈接。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久精品国产欧美日韩99热 | www.黄色片| 日韩在线观看第一页 | 亚洲国产高清在线 | 精品伊人久久久 | 色视频观看 | 中文在线免费视频 | 成人精品一区二区不卡视频 | 久草网站在线 | 在线观看国产日本 | 中文字幕亚洲精品日韩精品 | 欧美一级视频免费观看 | 成人免费真人毛片视频 | 亚洲视频一区在线观看 | 成人亚洲欧美 | 国产欧美在线观看 | 特黄aaaaaa久久片 | 国产一区二区高清在线 | 日韩三级一区二区三区 | 成人免费视频在线看 | 色在线导航| 黑丝在线观看 | 一级黄色大片免费看 | 亚洲线精品久久一区二区三区 | 成人黄色小视频 | 日韩二三区 | 亚洲欧美综合日韩字幕v在线 | 一级黄色片在线播放 | 成人综合在线观看 | 在线天堂中文在线资源网 | 免费网站看av片 | 久久天天躁狠狠躁夜夜躁 | 国产免费叼嘿网站免费 | 国产免费又爽又黄又刺激的视频 | 日韩欧美亚洲另类 | 一区二区三区四区国产精品 | 欧美在线不卡 | 亚洲人成在线观看一区二区 | 男女免费视频 | 韩国理伦片a级在线观看 | 欧美性与交视频在线观看 |