第一个Java网络爬虫程序

news/2024/7/19 9:28:20 标签: 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 = DEBUG

log4j.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. 编写最简单的爬虫,抓取汽车之家车辆评测数据
java">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);

        // 判断状态码是否是200
        if (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协议,避免对网站造成不必要的压力。在进行爬虫项目时,务必遵循道德规范,以确保爬虫活动的合法性和合规性。


http://www.niftyadmin.cn/n/5311509.html

相关文章

AcWing--小苹果-->模拟

5307. 小苹果 - AcWing题库&#xff08;python&#xff09; # 输入 # 苹果数量n nint(input()) # 天数 days0 # 拿到 n的天数 date0 while(n): # 天数 days1 # 判断是否拿到第n个苹果 if ( date 0 and n%3 1): datedays # 每天会三分之一的苹果…

Linux第20步_在虚拟机上安装“Visual Studio Code”

1、双击windows系统桌面上的“FileZilla Client.exe”&#xff0c;打开FTP客户端&#xff0c;点击03软件下的Visual Studio Code&#xff0c;发现code_1.50.1-1602600906_amd64。 2、点击“文件”&#xff0c;然后点击“站点管理器”&#xff0c;见下图操作&#xff1a; 3、点…

腾讯云域名外部入库流程

注册商是腾讯云&#xff0c;且在腾讯云管理的&#xff0c;请使用此教程外部入库。 如您的域名注册商是腾讯云但在聚名管理&#xff0c;请参考教程&#xff1a;https://www.west.cn/faq/list.asp?unid2539 在外部入库操作之前&#xff0c;请先登录腾讯云获取账号ID信息。…

Spring 见解 6 Spring事务控制

Spring事务控制 事务介绍 什么是事务&#xff1f; 当你需要一次执行多条SQL语句时&#xff0c;可以使用事务。通俗一点说&#xff0c;如果这几条SQL语句全部执行成功&#xff0c;则才对数据库进行一次更新&#xff0c;如果有一条SQL语句执行失败&#xff0c;则这几条SQL语句…

Transformer - Attention is all you need 论文阅读

虽然是跑路来NLP&#xff0c;但是还是立flag说要做个project&#xff0c;结果kaggle上的入门project给的例子用的是BERT&#xff0c;还提到这一方法属于transformer&#xff0c;所以大概率读完这一篇之后&#xff0c;会再看BERT的论文这个样子。 在李宏毅的NLP课程中多次提到了…

基于CNC车间的复合机器人柔性上下料系统改造方案

在制造业中&#xff0c;CNC车间一直面临着提高生产效率、降低人工成本和提升柔性生产能力的挑战。针对这些行业痛点&#xff0c;富唯智能为您提供一种创新的解决方案&#xff1a;复合机器人柔性上下料系统。本方案结合了先进的机器人技术和自动化系统&#xff0c;旨在提高生产效…

Python的工作日判断库(含调休)——chinese_calendar

chinese_calendar 库使用场景 chinese_calendar 库主要用于处理中国农历和节假日相关的日期计算和判断。以下是一些常见的使用场景&#xff1a; 判断日期是否为工作日&#xff1a;chinese_calendar 提供了 is_workday() 函数&#xff0c;可以判断指定日期是否为工作日&#xf…

如何用GPT完成论文高效写作?

详情点击链接&#xff1a;如何用GPT完成论文高效写作&#xff1f; 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制…