java爬虫(httpClient和Jsoup)

本文介绍了如何在Java中结合httpClient和Jsoup实现网页爬取。首先,引入了相关依赖,然后讲解了如何创建HTTP请求,包括GET和POST方式。接着,详细阐述了如何使用HttpClient发起请求并检查响应状态码。最后,利用Jsoup解析HTML页面,通过不同的方法获取页面元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引入pom依赖(httpClient,Jsoup)

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
</dependency>
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.13.1</version>
</dependency>

2.创建简单的请求操作

@Test
public void testJsoup() throws Exception {
    // 创建HttpClient
    CloseableHttpClient httpClient = HttpClients.createDefault();

    // 创建GET请求
    HttpGet httpGet = new HttpGet("https://blog.youkuaiyun.com/weixin_73375551/article/details/129018283?spm=1001.2014.3001.5502");
    httpGet.setHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36");

    // 获取响应
    CloseableHttpResponse response = httpClient.execute(httpGet);

    // 获取页面内容
    if (response.getStatusLine().getStatusCode() == 200) {
        String html = EntityUtils.toString(response.getEntity(), "UTF-8");

        // 创建Document对象
        Document document = Jsoup.parse(html);
        Element element = document.getElementById("articleContentId");
        String s = element.text();
        System.out.println(s);

    }

    response.close();
    httpClient.close();
}

HttpClient用于创建连接对象,如果请求方式为GET则可以创建HttpGet对象,若为POST请求可创建HttpPost对象,请求的参数为待访问的URL。

可以根据实际请求内容适当的增加header的内容。调用HttpClient的execute()方法发起请求,并创建一个CloseableHttpResponse响应对象,可以通过判断响应状态码确定请求的结果。

3.

@Test
public void testJsoup() throws Exception {
    // 创建HttpClient
    CloseableHttpClient httpClient = HttpClients.createDefault();

    // 创建GET请求
    HttpGet httpGet = new HttpGet("https://blog.youkuaiyun.com/weixin_73375551/article/details/129018283?spm=1001.2014.3001.5502");
    httpGet.setHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36");

    // 获取响应
    CloseableHttpResponse response = httpClient.execute(httpGet);

    // 获取页面内容
    if (response.getStatusLine().getStatusCode() == 200) {
        String html = EntityUtils.toString(response.getEntity(), "UTF-8");

        // 创建Document对象
        Document document = Jsoup.parse(html);
        Element element = document.getElementById("articleContentId");
        String s = element.text();
        System.out.println(s);

    }

    response.close();
    httpClient.close();
}

通过调用Jsoup的parse(String html)方法即可将原始的HTML页面解析为Document类,这样我们就能够通过getElementById(String attr)、getElementsByClass(String attr)、select(String classAttr)等方式获取页面中的标签元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值