自动抓取网页数据(项目简单思路 )

优采云 发布时间: 2021-10-01 07:26

  自动抓取网页数据(项目简单思路

)

  该项目的简单思想是首先将通过jsoup捕获的数据存储到ArrayList中,然后通过JDBC存储到数据库中

  创建了Maven项目。您需要在pom.xml中添加两个依赖项:

  

org.jsoup

jsoup

1.11.3

mysql

mysql-connector-java

5.1.38

  创建实体类:

  然后执行数据爬网和数据库保存操作:

  package control;

import dao.Blog;

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import org.jsoup.select.Elements;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.util.ArrayList;

public class Grab {

private static Document doc;

public static void main(String[] args) {

try {

//获取的网页链接

doc = Jsoup.connect("https://www.cnblogs.com/").get();

} catch (IOException e) {

e.printStackTrace();

}

//调用Blog类

BlogZhua();

}

/**

* 抓取网页数据

*/

public static void BlogZhua() {

//获取网页中的元素

Elements eles = doc.select("div#post_list>div.post_item");

//将抓取的数据存入到ArrayList集合中

ArrayList arrayList = new ArrayList();

//使用for循环遍历网页中的数据

for (Element ele : eles) {

//抓取页面中的文章标题

String txt = ele.select("div.post_item_body>h3>a.titlelnk").text();

//抓取页面中的文章链接

String href = ele.select("div.post_item_body>h3>a.titlelnk").attr("href");

//爬取文章作者

String author = ele.select("div.post_item_foot > a.lightblue").text();

//爬取文章发布时间

String reads = ele.select("div.post_item_foot > span.article_view > a.gray").text();

//将数据添加到集合中

Blog blog = new Blog();

blog.setTitle(txt);

blog.setHref(href);

blog.setAuthor(author);

blog.setReads(reads);

arrayList.add(blog);

}

//遍历ArrayList集合

for (Blog test : arrayList) {

// System.out.println("数据:" + test);

//此处调用AddBlog类,把集合中的数据添加到数据库中

AddBlog(test);

}

}

/**

* 数据库操作

*

* @param blog

*/

public static void AddBlog(Blog blog) {

try {

//加载mysql驱动

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

Connection connection = null;

PreparedStatement pstmt = null;

try {

//连接mysql

connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsoup?useSSL=true", "root", "1234");

//编写sql语句

String sql = "INSERT INTO `content`(`title`, `href`, `author`, `reads`) VALUES (?,?,?,?)";

pstmt = connection.prepareStatement(sql);

pstmt.setString(1, blog.getTitle());

pstmt.setString(2, blog.getHref());

pstmt.setString(3, blog.getAuthor());

pstmt.setString(4, blog.getReads());

int result = pstmt.executeUpdate();

//验证数据是否添加成功

if (result > 0) {

System.out.println("数据添加成功!");

}

} catch (SQLException throwables) {

throwables.printStackTrace();

System.out.println("数据库访问失败!");

}

}

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线