当前位置: 首页 > news >正文

第一个Java网络爬虫程序

目录

    • 前言
    • 第一个Java网络爬虫程序
    • 总结

前言

网络爬虫是一种获取互联网信息的技术,它可以模拟浏览器行为,访问网站并提取所需的数据。在这个小Demo中,我们使用Java语言结合HttpClient库实现了一个简单的爬虫程序,用于抓取汽车之家的车辆评测数据。在实际爬虫项目中,除了简单的HTTP请求,还需要处理页面解析、数据存储、反爬虫策略等问题。

第一个Java网络爬虫程序

  1. 引入依赖

HttpClient用于进行HTTP请求,slf4j用于日志记录。

    <dependencies><!-- HttpClient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></dependency><!-- 日志 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version></dependency></dependencies>
  1. 加入log4j.properties配置

创建log4j.properties文件,用于配置日志输出的格式和级别。

log4j.rootLogger=DEBUG,A1
log4j.logger.cn.itcast = DEBUGlog4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
  1. 编写最简单的爬虫,抓取汽车之家车辆评测数据
public class AutohomeCrawlerTest {public static void main(String[] args) throws Exception {// 创建HttpClient对象CloseableHttpClient httpClient = HttpClients.createDefault();// 声明访问地址HttpGet httpGet = new HttpGet("https://www.autohome.com.cn/bestauto/");// 发起请求CloseableHttpResponse response = httpClient.execute(httpGet);// 判断状态码是否是200if (response.getStatusLine().getStatusCode() == 200) {// 解析数据String content = EntityUtils.toString(response.getEntity(), "UTF-8");System.out.println(content);}}
}
  • CloseableHttpClient httpClient = HttpClients.createDefault();:创建一个默认的CloseableHttpClient对象,用于执行HTTP请求。
  • HttpGet httpGet = new HttpGet("https://www.autohome.com.cn/bestauto/");:创建一个HttpGet对象,指定要访问的URL。
  • CloseableHttpResponse response = httpClient.execute(httpGet);:使用httpClient对象执行HTTP请求,获取服务器的响应。
  • if (response.getStatusLine().getStatusCode() == 200):判断HTTP响应的状态码是否为200,表示请求成功。
  • String content = EntityUtils.toString(response.getEntity(), "UTF-8");:将服务器响应的实体内容转换为字符串,使用UTF-8编码。
  • System.out.println(content);:输出请求返回的HTML内容。

一般步骤:

  1. 创建HttpClient对象
  2. 声明访问地址
  3. 发起请求
  4. 解析数据

测试结果:
在这里插入图片描述

总结

这个小Demo展示了如何使用Java进行基本的网络爬虫操作。值得注意的是,爬取网站数据需要遵循法律规定和网站的使用条款,以及尊重隐私权和知识产权。网络爬虫在实际应用中需要更加复杂的处理,例如处理动态网页、使用代理、设置请求头等。同时,要注意网站的Robots协议,避免对网站造成不必要的压力。在进行爬虫项目时,务必遵循道德规范,以确保爬虫活动的合法性和合规性。

相关文章:

  • 玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 编译构建及此过程中的踩坑填坑(1)
  • Leetcode 2998. Minimum Number of Operations to Make X and Y Equal
  • 一、Qt介绍
  • 想要成为机器学习领域的高手吗?这里有五本必读免费书,订阅周报发链接 (下)
  • vite + vue3引入ant design vue 报错
  • Linux第9步_通过终端查看U盘文件
  • MongoDB主从仲裁模式安装
  • CSS3渐变属性之重复渐变
  • WPF自定义漂亮顶部工具栏 WPF自定义精致最大化关闭工具栏 wpf导航栏自定义 WPF快速开发工具栏
  • 在Windows上使用VScode阅读kernel源码
  • SparkStreaming基础解析(四)
  • 松露行业分析:预计2026年复合年增长率为3.5%
  • Hive 的 安装与部署
  • Java学习苦旅(二十五)——哈希表
  • VSCode搭建 .netcore 开发环境
  • @jsonView过滤属性
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript 基础知识 - 入门篇(一)
  • Mysql5.6主从复制
  • PAT A1050
  • VUE es6技巧写法(持续更新中~~~)
  • 从PHP迁移至Golang - 基础篇
  • 后端_MYSQL
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 聚簇索引和非聚簇索引
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端
  • 前端代码风格自动化系列(二)之Commitlint
  • 小程序开发中的那些坑
  • 一道面试题引发的“血案”
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​ssh免密码登录设置及问题总结
  • ​虚拟化系列介绍(十)
  • $(function(){})与(function($){....})(jQuery)的区别
  • $jQuery 重写Alert样式方法
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (二十四)Flask之flask-session组件
  • (分布式缓存)Redis分片集群
  • (南京观海微电子)——COF介绍
  • (算法)前K大的和
  • (学习日记)2024.01.19
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 设计一套高性能的弱事件机制
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .net打印*三角形
  • .sh 的运行
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [GN] DP学习笔记板子
  • [IDF]聪明的小羊
  • [IOI2007 D1T1]Miners 矿工配餐
  • [Kubernetes]8. K8s使用Helm部署mysql集群(主从数据库集群)