如何使用Jsoup爬取网页内容

摘要:
“);}}catch{e.printStackTrace();}}操作的结果如下:这里,一个爬虫程序完成了,它只是关于扔砖块和引用。感兴趣的学生,请扩展自己。如果关系一开始就不平等,那么就早点结束它,让他人和自己都受益。

前言:

这是一篇迟到很久的文章了,人真的是越来越懒,前一阵用jsoup实现了一个功能,个人觉得和selenium的webdriver原理类似,所以今天正好有时间,就又来更新分享了。

实现场景:

爬取博客园https://www.cnblogs.com/longronglang,文章列表中标题、链接、发布时间及阅读量

如何使用Jsoup爬取网页内容第1张

思路:

1、引入jar包

2、通过httpclient,设置参数,代理,建立连接,获取HTML文档(响应信息)

3、将获取的响应信息,转换成HTML文档为Document对象

4、使用jQuery定位方式,这块就和web自动化一样了定位获取文本及相关属性

相关详细使用参考官网:https://jsoup.org/

实现:

 1、引入依赖

<dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.10.3</version>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
</dependency>

2、通过httpclient,设置参数,代理,建立连接,获取HTML文档(响应信息)

        String requestUrl = "https://www.cnblogs.com/longronglang/";
        HttpClient client = new HttpClient();
        HttpClientParams clientParams = client.getParams();
        clientParams.setContentCharset("UTF-8");
        GetMethod method = new GetMethod(requestUrl);
        String response =method.getResponseBodyAsString();

3、将获取的响应信息,转换成HTML文档为Document对象

  Document document = Jsoup.parse(response);

4、使用jQuery定位方式,这块就和web自动化一样了定位获取文本及相关属性

这里可以仔细看下,也可以说是核心思路了,如下图:

如何使用Jsoup爬取网页内容第2张

 从图中可以看到,文章标题在在a标签中,也就是通过class属性为postTitle2进行绑定,那么我们的dom对象就定位到这里即可,那么我想获取文章标题这个dom对象,可以写成如下代码:

 Elements postItems = document.getElementsByClass("postTitle2");

同理,获取发布时间及阅读量,也可以写成如下代码:

 Elements readcontexts = document.getElementsByClass("postDesc");

最后我们来段整合的代码如下:

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.junit.Test;

import java.io.IOException;

public class JsoupTest {

    @Test
    public void test() {
        String requestUrl = "https://www.cnblogs.com/longronglang/";
        HttpClient client = new HttpClient();
        HttpClientParams clientParams = client.getParams();
        clientParams.setContentCharset("UTF-8");
        GetMethod method = new GetMethod(requestUrl);
        String response = null;
        int code = 0;
        try {
            code = client.executeMethod(method);
            response = method.getResponseBodyAsString();
            if (code == HttpStatus.SC_OK) {
                Document document = Jsoup.parse(response);
                Elements postItems = document.getElementsByClass("postTitle2");
                Elements readcontexts = document.getElementsByClass("postDesc");
                for (int i = 0; i < postItems.size(); i++) {
                    System.out.println("文章标题:" + postItems.get(i).text());
                    System.out.println("文章地址:" + postItems.get(i).attr("href"));
                    System.out.println("发布信息:" + readcontexts.get(i).text());
                }
            } else {
                System.out.println("返回状态不是200,可能需要登录或者授权,亦或者重定向了!");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果如下:

如何使用Jsoup爬取网页内容第3张

到此,一个爬虫搞完,这里只事抛砖引用,有兴趣的同学,请自行扩展。

如果感情一开始就是不对等的,那么索性就早点结束掉它,利人利己。

免责声明:文章转载自《如何使用Jsoup爬取网页内容》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇FindWindowEx使用方法kong插件Prometheus+grafana图形化展示下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Jsoup教程jsoup开发指南,jsoup中文使用手册,jsoup中文文档

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 jsoup的主要功能如下: 从一个URL,文件或字符串中解析HTML; 使用DOM或CSS选择器来查找、取出数据; 可操作HTML元素、属性...

[转]Jsoup(一)Jsoup详解(官方)

原文地址:http://www.cnblogs.com/zhangyinhua/p/8037599.html 一、Jsoup概述 1.1、简介     jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,  可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 1.2、J...

Springboot 解析 json 并返回+ Jsoup介绍及解析常用方法

1、配置pom.xml <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.11.2...

Jsoup爬取数据设置代理IP

最近,使用Jsoup爬取数据发现有的网站当你用自己的电脑爬取数据,次数多的时候就会发现本地的电脑就会连不上,原因是本地IP被限制或者拦截了。 因此,自己也找了一些资料,发现爬取数据的时候可以设置代理Ip,这样就不会发生本地Ip被封掉的危险了。代码如下:   //设置代理Ip System. getProperties(). setProperty("...

Jsoup使用教程

一、解析和遍历一个HTML文档1、解析Html及Url链接 1 String html = "<html><head><title>First parse</title></head>" 2 + "<body><p>Parsed HTML into a doc.<...

java使用jsoup时绕过https证书验证

详细错误信息: SunCertPathBuilderException: unable to find valid certification path to requested target 问题原因:爬相关数据,因该网站有SSL加密,故无法爬取。 问题解决之核心代码: /** * 绕过HTTPS验证 */ static publi...