大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java網絡爬蟲的制作方法

Java網絡爬蟲的制作方法

更新時間:2022-03-25 11:37:49 來源:動力節點 瀏覽1679次

互聯網上有很多有用的信息。我們如何才能自動獲取這些信息?- 是的,Java網絡爬蟲。

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

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

基本的Java編程

一點關于 SQL 和 MySQL數據庫概念

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

1. 目標

在本教程中,目標如下:

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

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

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

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

在做上述步驟的時候,我們需要跟蹤之前處理過哪個頁面,這樣每個網頁只被處理一次。這就是我們需要數據庫的原因。

2.設置MySQL數據庫

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

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

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

3.創建數據庫和表

創建一個名為“Crawler”的數據庫并創建一個名為“Record”的表,如下所示:

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">如果不存在 `Record` (`RecordID` int(11) NOT NULL AUTO_INCREMENT, `URL` text NOT NULL, PRIMARY KEY (`RecordID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;</font></font>

4.使用Java開始爬取

(1)從 http://jsoup.org/download 下載 JSoup 核心庫。

從 http://dev.mysql.com/downloads/connector/j/ 下載 mysql-connector-java-xxxbin.jar

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

(3)創建一個名為“DB”的類,用于處理數據庫操作。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; 
public class DB { 
	public Connection conn = null; 
	public DB() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost:3306/Crawler";
			conn = DriverManager.getConnection(url, "root", "admin213");
			System.out.println("conn built");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	} 
	public ResultSet runSql(String sql) throws SQLException {
		Statement sta = conn.createStatement();
		return sta.executeQuery(sql);
	} 
	public boolean runSql2(String sql) throws SQLException {
		Statement sta = conn.createStatement();
		return sta.execute(sql);
	} 
	@Override
	protected void finalize() throws Throwable {
		if (conn != null || !conn.isClosed()) {
			conn.close();
		}
	}
}

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

import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; 
public class Main {
	public static DB db = new DB(); 
	public static void main(String[] args) throws SQLException, IOException {
		db.runSql2("TRUNCATE Record;");
		processPage("http://www.mit.edu"http://www.mit.edu");
	} 
	public static void processPage(String URL) throws SQLException, IOException{
		//check if the given URL is already in database
		String sql = "select * from Record where URL = '"+URL+"'";
		ResultSet rs = db.runSql(sql);
		if(rs.next()){ 
		}else{
			//store the URL to database to avoid parsing again
			sql = "INSERT INTO  `Crawler`.`Record` " + "(`URL`) VALUES " + "(?);";
			PreparedStatement stmt = db.conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			stmt.setString(1, URL);
			stmt.execute();
			//get useful information
			Document doc = Jsoup.connect("http://www.mit.edu/"http://www.mit.edu/").get();
			if(doc.text().contains("research")){
				System.out.println(URL);
			} 
			//get all links and recursively call the processPage method
			Elements questions = doc.select("a[href]");
			for(Element link: questions){
				if(link.attr("href").contains("mit.edu"))
					processPage(link.attr("abs:href"));
			}
		}
	}
}

現在您有了自己的Java網絡爬蟲。當然,您需要過濾掉一些您不想抓取的鏈接。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 天天干夜夜夜操 | 久99久爱精品免费观看视频 | 好吊妞免费视频 | 久久久精品久久久久久久久久久 | 久久香蕉国产线看免费 | 亚洲欧美在线一区 | 久久精品综合一区二区三区 | 欧美日韩一区二区不卡三区 | 国产一二三区在线 | 天天爱天天干天天操 | 中国性孕妇xxxxxxxx孕交 | 国产草草 | 成人免费毛片网站 | 国产精品久久久久乳精品爆 | 久久香蕉国产线看观看乱码 | 国产精品1区2区3区在线播放 | www成人网| 欧美成人午夜视频免看 | 久草在线这里只有精品 | 免费一级特黄 欧美大片 | 免费福利影院 | 最新中文字幕在线观看 | 日本一级毛片片在线播放 | 国产1区精品 | 色费女人18毛片a级视频在线 | 日本不卡中文字幕一区二区 | 欧美中文字幕在线观看 | 欧美激情久久欧美激情 | 福利资源在线 | 一级欧美激情毛片 | 欧美乱大交xxxxx按摩v | 欧美午夜寂寞影院安卓列表 | 97影院理论片 | 成年人黄视频大全 | 免费高清在线影片一区 | 一级特黄特黄毛片欧美的 | 四虎影视2022入口网址 | 四虎在线影院 | 国产精品视频一区牛牛视频 | 国产毛片精品 | 国产亚洲精品久久久久久久软件 |