JAVA 爬取指定网站的数据并存入MySQL数据库中 maven +httpclient+jsoup+mysql

news/2024/5/20 23:53:52/文章来源:https://blog.csdn.net/wl20222022/article/details/84872408

            最近在做一个小项目,因为要用的数据爬取,所以研究了好多天,分享一下自己的方法

目录结构:

自己创建maven工程,导入相关依赖:pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>maven</groupId><artifactId>maven</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>maven Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.18</version></dependency><!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.8.3</version></dependency></dependencies><build><finalName>maven</finalName><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.0.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.7.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.20.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.0</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></pluginManagement></build></project>

StockTest类:

import java.io.IOException;
import java.sql.*;
import org.apache.http.ParseException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/*** @author * @date 2018/12/6 */
public class StockTest {public static void main(String[] args) throws ParseException, IOException {String content = StockUtils.getHtmlByUrl("https:***需要爬取的网页****", "utf-8");parserHtml(content);}public static void parserHtml(String content) throws ParseException, IOException {Document doc = Jsoup.parse(content);//Elements links = doc.getElementsByClass("winstyle214").select("tr");Elements links = doc.getElementsByClass("winstyle614").select("tr");//line67214_0for (Element e : links) {String title = e.select("a").text().toString();System.out.println("新闻标题:" + title);//获取页面链接Elements linkHref = e.select("a");String url =   linkHref.attr("href");System.out.println("新闻链接:" + url);//截取时间字符串Elements timeStr = e.select("span[class=timestyle67214]");String time = timeStr.text();System.out.println("发布时间:" + time);insert(title, url, time);}}private static void insert(String title, String urll, String date1) {Connection con = null;PreparedStatement pstm = null;PropertiesUtil.loadFile("jdbc.properties");String driver = PropertiesUtil.getPropertyValue("driver");String url = PropertiesUtil.getPropertyValue("url");String username = PropertiesUtil.getPropertyValue("username");String password = PropertiesUtil.getPropertyValue("password");try {Class.forName(driver);con = DriverManager.getConnection(url,username,password);String sql = "insert into news(title,urll,date1) value(?,?,?)";pstm = con.prepareStatement(sql);pstm.setString(1, title);pstm.setString(2, urll);pstm.setString(3, date1);} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {if (con != null) {try {con.close();} catch (SQLException e) {e.printStackTrace();}if (pstm != null) {try {pstm.close();} catch (SQLException e) {e.printStackTrace();}}}}}
}

StokUtils类:

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;
/*** 传递网页链接* 返回网页源码* @author**/
public class StockUtils {//第一次获取网页源码public static String getHtmlByUrl(final String url, final String charset) throws IOException {/*RequestConfig defaultRequestConfig = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(5000).build();*///CloseableHttpClient httpclient = HttpClients.custom().setMaxConnTotal(800).setMaxConnPerRoute(800).setDefaultRequestConfig(defaultRequestConfig).build();CloseableHttpClient httpclient = HttpClients.createDefault();try {HttpGet httpget = new HttpGet(url);//System.out.println("executing request " + httpget.getURI());ResponseHandler<String> responseHandler = new ResponseHandler<String>() {public String handleResponse(final HttpResponse response) throws ClientProtocolException, IOException {int status = response.getStatusLine().getStatusCode();//System.out.println("========responseStatusCode:"+status + "  "+url);if (status == 200) {HttpEntity entity = response.getEntity();if (entity == null) {System.out.println("========entity is null:" + status + "  " + url);return null;} else {String content = EntityUtils.toString(entity);if (charset != null) {content = new String(content.getBytes("ISO-8859-1"), charset);}return content;}} else {throw new ClientProtocolException("Unexpected response status: " + status);}}};String responseBody = httpclient.execute(httpget, responseHandler);return responseBody;} catch (ClientProtocolException e) {System.out.println("========ClientProtocolException====" + e.getMessage() + "  " + url);//e.printStackTrace();return getHtmlByUrl(url, charset);} catch (IOException e) {System.out.println("========IOException====" + e.getMessage() + "  " + url);//e.printStackTrace();return getHtmlByUrl(url, charset);} finally {httpclient.close();}}
}

配置文件    jdbc.properties(maven 工程和JAVA工程连接数据库还是有所不同的,具体自己百度):

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/zgschool?useUnicode=true&characterEncoding=utf-8&useSSL=false
username=root
password=root

配置该文件后,properties类会自动生成。。。。

至此,大功告成。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_900140.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云快速搭建个人网站

阿里云服务器快速搭建个人网站 在服务器购买的前提下进行这一步。 我们需要下载服务器搭建的软件&#xff1a; 这里附上百度云的下载地址&#xff1a; 链接&#xff1a;点击下载 提取码&#xff1a;9qcr 现在打开putty和WinSCP,putty是进行一些命令操作&#xff0c;WinSC…

分享一下本人常用前端的网站

前言 这些是我收藏的前端网站&#xff0c;有很多好用的前端工具网站&#xff0c;平时写代码经常用到&#xff0c;也可以访问我的个人博客查看哦&#xff08;访问地址在底部&#xff09;&#xff0c;我的个人博客会不定期更新&#xff0c;分享一些有用的知识点及工具类网站&…

推荐:学习unity Shader必须知道的网站Shadertoy

推荐&#xff1a;学习unity Shader必须知道的网站Shadertoy 2019年04月10日 18:02:28 Jovial心态 阅读数 92 版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 by-sa 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blo…

爬虫案例:中国大学排名及网站更新后爬取问题解决(2021.3.28)

解答标签string属性Tag.string方法获取不了的问题 本次爬虫的URL&#xff08;上海软科中国大学排名&#xff09;: https://www.shanghairanking.cn/rankings/bcur/2020 案例来源&#xff1a;中国大学慕课嵩天老师的“Python网络爬虫与信息提取” 由于该课程的录制时间较早&am…

推荐有关git的一张图片和2个网站

原创文章属于《Linux大棚》博客&#xff0c;博客地址为http://roclinux.cn。 文章作者为 rocrocket。 为了防止某些网站的恶性转载&#xff0c;特在每篇文章前加入此信息&#xff0c;还望读者体谅。 [正文开始] 一张描述git数据迁移的示意图&#xff0c;很清晰&#xff0c;对…

studio styles网站download按钮无法使用

解决方法&#xff1a;点击F12&#xff0c;查看网页源码。选择选取页面中的元素&#xff0c;选择download按钮&#xff0c;如下图所示&#xff1a; downloadExisting后面的数字代表主题的ID。 在网站中输入https://studiostyl.es/settings/downloadScheme/2372?versionnull 即可…

支付宝电脑网站支付

准入条件 营业执照通过ICP备案的网站使用沙箱 沙箱接入&#xff1a;直接使用沙箱提供的开发参数&#xff0c;无需进行应用的创建&#xff0c;绑定&#xff0c;上线和签约 node.js&#xff1a; 基于chrome v8引擎的JavaScript运行环境使用了一个事件驱动&#xff0c;非阻塞I…

微信公众号文章转pdf下载,不难也不太容易,磕磕绊绊倒是不少如何用xpath保存网站源码;如何精简你的文章请求链接;如何将文章转化为pdf文件,不乱码,不报错

目录 敲黑板抓包分析看碟下菜&#xff0c;确认分析思路锁定有效数据包分析响应信息和请求连接 黑板报如何用xpath保存网站源码如何精简你的文章请求链接如何将文章转化为pdf文件&#xff0c;不乱码&#xff0c;不报错 总结 敲黑板 本章主要运用的知识点&#xff1a; 如何用xp…

在线网站的加密混淆JS的分析技巧

混淆后的js 通常来说js加密后犹如天书&#xff0c;各种变量方法都变为了abc&#xff0c;在没有js map文件的情况下更是无法进行js代码调试与定位(或者不方便),本文为大家带来一种定位与调试技巧. 思路如下: 1.在源网站下载需要调试的js代码. 2.使用广告屏蔽插件将原有网站js…

镇江SEO推广:内容页收录很少,怎么办?

在做镇江SEO推广的时候&#xff0c;我们与本地SEO人员相互交流与学习的时间相对较少&#xff0c;有什么问题&#xff0c;都需要自己亲身实践得出经验&#xff0c;进行解决。 其中&#xff0c;在镇江做SEO推广最常见的问题就是&#xff1a;内容页收录的问题&#xff01; 那么&a…

镇江网络SEO:如何让百度收录网站,提高竞争力?

镇江网络SEO&#xff0c;经常会讨论的问题就是如何让百度收录网站&#xff0c;这是目标站点参与排名的一个重要因素&#xff0c;如果网页收录不能很好的达到一定数量级。 那么&#xff0c;很难在后期的竞争中&#xff0c;很难支撑高竞争度的关键词去排名。 那么&#xff0c;镇…

镇江百度SEO:网站收录大量页面,为什么权重一直为0?

对于镇江百度SEO而言&#xff0c;我们经常会面临一个窘境&#xff0c;就是明明网站被收录大量页面&#xff0c;可确没有任何一个排名&#xff0c;网站的权重也一直为零&#xff0c;这让很多镇江的站长头疼。 镇江百度SEO&#xff1a;网站收录大量页面&#xff0c;为什么权重一直…

镇江SEO搜索优化:百度秒收录小方法!

镇江SEO搜索优化的圈子相对较小&#xff0c;很多SEO人员喜欢追求极致的SEO策略&#xff0c;比如&#xff1a;百度秒收录&#xff0c;而实际上&#xff0c;并没有严格意义上的秒收录。 所谓的百度秒收录&#xff0c;只是一个形象的比喻&#xff0c;达到分钟级的收录&#xff0c…

镇江SEO排名:为什么百度掉收录?

在做镇江SEO排名的过程中&#xff0c;偶尔我们会遇到索引量开始缓慢下降的情况&#xff0c;在经过一段时间&#xff0c;就会出现百度掉收录的问题&#xff0c;这让很多SEO人员产生疑问。 明明&#xff0c;我们没有做过任何负面的SEO操作&#xff0c;怎么仍然还会出现百度掉收录…

镇江SEO搜索引擎优化:为什么百度收录差?

做镇江SEO搜索引擎优化的时候&#xff0c;我们偶尔会遇到百度收录差的情况&#xff0c;并不是说百度不收录我们的网页&#xff0c;而是收录进程很缓慢&#xff0c;比如&#xff1a; ① 有的文章刚发布&#xff0c;没几分钟就收录。 ② 有的文章发布几天&#xff0c;才收录。 …

镇江SEO顾问:讲述,怎么查百度收录!

作为镇江SEO顾问&#xff0c;我们每天面对大量的镇江SEO网站的优化&#xff0c;你需要监控每个网站的各项指标&#xff0c;其中&#xff0c;查百度收录&#xff0c;是一个重要的工作。 它在做网站评估与诊断的时候&#xff0c;具有重要的意义。 那么&#xff0c;镇江SEO顾问&a…

镇江SEO云优化:如何提高百度收录率?

所谓的镇江SEO云优化&#xff0c;主要是指在镇江做SEO&#xff0c;利用SEO“云”策略&#xff0c;提高百度收录率&#xff0c;他相当于创建一个大的蜘蛛池&#xff0c;吸引大量的百度蜘蛛不断访问这个容器。促使被投放到这个容器中的URL&#xff0c;有效的被百度收录。 那么&am…

镇江企业SEO:百度关键词收录小妙招!

对于镇江企业SEO而言&#xff0c;我们经常会讨论&#xff1a;百度关键词收录的问题。 通常&#xff0c;针对初创的镇江企业而言&#xff0c;我们通常建议选择适当的关键词&#xff0c;而后在考量百度收录的问题&#xff0c;因此网站建设初期&#xff0c;选择关键词显得格外重要…

镇江SEO外包:如何识别百度免费收录的坑?

对于在镇江做SEO而言&#xff0c;我们通常情况下&#xff0c;由于人力资源与时间精力有限&#xff0c;我们通常选择镇江SEO外包&#xff0c;将自己的业务&#xff0c;交给镇江SEO机构&#xff0c;代理完成。 但在实际交流与沟通的过程中&#xff0c;镇江SEO外包的相关团队经常…

镇江SEO咨询:如何让百度收录快?

早些年&#xff0c;在做镇江SEO咨询的时候&#xff0c;我们经常会被问及一个问题&#xff0c;那就是如何让百度收录快&#xff0c;实际上&#xff0c;理论上它受网站的多重因素影响&#xff0c;虽然让百度收录快的流程基本相差无二&#xff0c;但根据自身网站的不同&#xff0c…