首页 » PHP教程 » php实现画板技巧_若何运用Java制作收集爬虫

php实现画板技巧_若何运用Java制作收集爬虫

访客 2024-11-22 0

扫一扫用手机浏览

文章目录 [+]

这篇文章展示了如何利用Java制作大略的Web爬网程序原型。
制作Web征采器并不像听起来那样困难。
只需按照指南进行操作,您将在1小时或更短的韶光内迅速到达该地点,然后享受它可以为您供应的大量信息。
由于这只是一个原型,因此您须要花费更多韶光来根据须要自定义它。

以下是本教程的先决条件:

php实现画板技巧_若何运用Java制作收集爬虫

· 基本Java程式设计

php实现画板技巧_若何运用Java制作收集爬虫
(图片来自网络侵删)

· 关于SQL和MySQL数据库的一些知识。

如果您不想利用数据库,则可以利用文件来跟踪爬网历史记录。

1.目标

在本教程中,目标如下:

给定学校根URL,例如" mit.edu",返回包含该学校字符串" research"的所有页面

范例的征采器按以下步骤事情:

1. 解析根网页(" mit.edu"),并从该页面获取所有链接。
要访问每个URL并解析HTML页面,我将利用JSoup,它是用Java编写的便捷的网页解析器。

2. 利用从步骤1检索到的URL,并解析这些URL

3. 实行上述步骤时,我们须要跟踪之前已处理过的页面,因此每个网页仅被处理一次。
这便是我们须要数据库的缘故原由。

2.设置MySQL数据库

如果您利用的是Ubuntu,则可以按照本指南安装Apache,MySQL,PHP和phpMyAdmin。

如果利用Windows,则只需利用WampServer。
您可以大略地从wampserver.com下载它,并在一分钟内安装它,可以连续进行下一步。

我将利用phpMyAdmin来操作MySQL数据库。
它只是利用MySQL的GUI界面。
如果您利用任何其他工具或不该用GUI工具,那都很好。

3.创建一个数据库和一个表

创建一个名为" Crawler"的数据库,并创建一个名为" 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)下载JSoup核心库。

2)现在,在Jsoup中创建一个名为" 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");

}

 

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/").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的资料与口试题,如果你在技能上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系办法,有韶光记得帮我点下转发让跟多的人看到哦。

标签:

相关文章

执业药师试卷代码解码药师职业发展之路

执业药师在药品质量管理、用药安全等方面发挥着越来越重要的作用。而执业药师考试,作为进入药师行业的重要门槛,其试卷代码更是成为了药师...

PHP教程 2025-02-18 阅读0 评论0

心灵代码主题曲唤醒灵魂深处的共鸣

音乐,作为一种独特的艺术形式,自古以来就承载着人类情感的表达与传递。心灵代码主题曲,以其独特的旋律和歌词,唤醒了无数人的灵魂深处,...

PHP教程 2025-02-18 阅读0 评论0

探寻福建各市车牌代码背后的文化内涵

福建省,地处我国东南沿海,拥有悠久的历史和丰富的文化底蕴。在这片充满魅力的土地上,诞生了许多具有代表性的城市,每个城市都有自己独特...

PHP教程 2025-02-18 阅读0 评论0

探寻河北唐山历史与现代交融的城市之光

河北省唐山市,一座地处渤海之滨,拥有悠久历史和独特文化的城市。这里既是古丝绸之路的起点,也是中国近代工业的发源地。如今,唐山正以崭...

PHP教程 2025-02-18 阅读0 评论0