java_网路爬虫_0

使用idea创建mavn工程,pom.xml文件

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>org.example</groupId>
    <artifactId>crawler</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
<dependencies>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.13</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.15.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.7</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.7</version>
    </dependency>
</dependencies>
</project>
复制代码
log4j.properites文件
java 复制代码
#这些是Log4j的配置指令,Log4j是一个用于Java项目的强大的日志记录库。让我们一步步来解析:
#
#log4j.rootLogger=DEBUG,A1: 这条指令设定了Log4j的根记录器,即默认记录器。其日志级别被设置为DEBUG,
# 这意味着所有级别为DEBUG及以上的日志都将被记录。同时,所有的日志都将被发送到名为A1的appender。
#Log4j的日志级别分为8个等级,分别是:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL,
#它们的优先级顺序为:OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL。
#
#这些级别从高到低分别表示:
#
#OFF:关闭所有日志记录。
#FATAL:指出每个严重的错误事件将会导致应用程序的退出。
#ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行。
#WARN:表明会出现潜在错误的情形。
#INFO:消息在粗粒度级别上突出强调应用程序的运行过程。
#DEBUG:指出细粒度信息事件对调试应用程序是非常有帮助的。
#TRACE:跟踪日志,日志消息的粒度太细,不常使用。
#ALL:最低等级的,用于打开所有日志记录。
#通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关。例如,如果设置优先级为INFO,
#那么DEBUG级别的日志信息将不会被打印出来,而优先级更高的WARN、ERROR、FATAL级别的日志信息则会被打#印出来。
#
#log4j.appender.A1=org.apache.log4j.ConsoleAppender: 这条指令定义了一个名为"A1"的appender,
# 它是一个控制台appender。这意味着所有发送到这个appender的日志都将被打印到控制台。
#
#log4j.appender.A1.layout=org.apache.log4j.PatternLayout: 这条指令为"A1" appender设置了一个#布局。
# PatternLayout允许我们定义日志消息的格式。
#
#log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n:
# 这是PatternLayout的转换模式,它定义了日志消息的格式。具体来说:
#
#%-d{yyyy-MM-dd HH:mm:ss,SSS}:这将输出日期和时间。
#[%t]:这将输出产生日志的线程名。
#[%c]:这将输出日志事件的类别名。
#[%p]:这将输出日志事件的优先级,即DEBUG,INFO等。
#%m:这将输出应用提供的消息。
#%n:这将输出平台特定的行分隔符。
#综上,这些配置会设置Log4j的记录器、appender以及日志消息的格式,以便在控制台打印出格式化的日志信#息。
log4j.rootLogger=DEBUG,A1
#把cn.lala包下的文件的日志级别设置为DEBUG
log4j.logger.cn.lala = 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

编写最简单的爬虫,抓取汽车之家车辆评测数据

java 复制代码
package cn.lala.crawler.httpclient.test;


import org.apache.http.client.methods.CloseableHttpResponse;
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;

@SuppressWarnings("all")
public class AutohomeCrawlerTest {
    public static void main(String[] args) throws IOException {
        //1,创建HttpClient对象,这个对象是用来发起请求的,相当于浏览器
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //2,声明HttpGet请求对象,相当于输入请求地址
        HttpGet httpGet = new HttpGet("https://www.autohome.com.cn/bestauto/");

        //3,使用HttpClient发起HttpGet请求,获取response,相当于按回车
        CloseableHttpResponse response = httpClient.execute(httpGet);

        //4,判断响应状态码时候是200,如果是,则获取响应数据
        if(response.getStatusLine().getStatusCode()==200){

            String html = EntityUtils.toString(response.getEntity(), "UTF-8");
            System.out.println(html);
        }
    }
}
相关推荐
如若123几秒前
对文件内的文件名生成目录,方便查阅
java·前端·python
西猫雷婶29 分钟前
python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶
开发语言·python·opencv
kiiila30 分钟前
【Qt】对象树(生命周期管理)和字符集(cout打印乱码问题)
开发语言·qt
初晴~30 分钟前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
小_太_阳1 小时前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea
直裾1 小时前
scala借阅图书保存记录(三)
开发语言·后端·scala
黑胡子大叔的小屋1 小时前
基于springboot的海洋知识服务平台的设计与实现
java·spring boot·毕业设计
ThisIsClark1 小时前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
唐 城1 小时前
curl 放弃对 Hyper Rust HTTP 后端的支持
开发语言·http·rust
雷神乐乐2 小时前
Spring学习(一)——Sping-XML
java·学习·spring