Java中常用的爬虫技术—Jsoup

Java中常用的爬虫技术—Jsoup

Jsoup是一种爬虫技术,同时它也提供了对网页DOM进行解析的一系列方法,通过类JQuery的语法来操作网页标签,获取节点数据。

它诞生的时间,恰巧是JQuery兴起的那些年,JQuery作为一个被广泛使用的前端框架,后端程序猿其实也不陌生——毕竟大部分后端的管理系统,都会用它。

Jsoup的主要功能

  1. 从一个URL,文件或字符串中解析HTML

  2. 使用DOM或CSS选择器来查找、取出数据使用DOM或CSS选择器来查找、取出数据

  3. 可操作HTML元素、属性、文本可操作HTML元素、属性、文本

其实说白了,主要用作爬虫技术。


引入Maven依赖

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.11.3</version>
</dependency>


jsoup API
6个包提供用于开发jsoup应用程序的类和接口。

  • org.jsoup

  • org.jsoup.examples

  • org.jsoup.helper

  • org.jsoup.nodes

  • org.jsoup.parser

  • org.jsoup.safety

  • org.jsoup.salect


主要类:

  • Jsoup  类提供了连接,清理和解析HTML文档的方法

  • Document  获取HTML文档

  • Element   获取、操作HTML节点


简单入门

1. 三种加载HTML的方法

    //从URL加载HTML
    Document document = Jsoup.connect("http://www.baidu.com").get();

    //获取html中的标题
    String title = document.title();

    //从字符串加载HTML
    String html = "<html><head><title>First parse</title></head>"
                    + "<body><p>Parsed HTML into a doc.</p></body></html>";
    Document doc = Jsoup.parse(html);
    title = doc.title();

    //从文件加载HTML
    doc = Jsoup.parse(new File("F:\\jsoup\\html\\index.html"),"utf-8");
    title = doc.title();

 

2. 获取html中的head,body,url等信息

    Document document = Jsoup.connect("http://www.baidu.com").get();
    String title = document.title();

    System.out.println("title :"+title);
    //获取html中的head
    System.out.println(document.head());
    //获取html中的body
    //System.out.println(document.body());

    //获取HTML页面中的所有链接
    Elements links = document.select("a[href]");
    for (Element link : links){
        System.out.println("link : "+ link.attr("href"));
        System.out.println("text :"+ link.text());
    }


3. 获取URL的元信息

    Document document = Jsoup.connect("https://passport.lagou.com").get();

    System.out.println(document.head());
    //获取URL的元信息
    String description = document.select("meta[name=description]").get(0).attr("content");
    System.out.println("Meta description : " + description);

    String keywords = document.select("meta[name=keywords]").first().attr("content");
    System.out.println("Meta keyword : " + keywords);


4. 提取并打印表单参数

    Document document = Jsoup.parse(new File("F:\\jsoup\\html\\login.html"),"utf-8");
    Element loginform = document.getElementById("registerform");

    Elements inputElements = loginform.getElementsByTag("input");
    for (Element inputElement : inputElements) {
        String key = inputElement.attr("name");
        String value = inputElement.attr("value");
        System.out.println("Param name: "+key+" -- Param value: "+value);
    }


其实除了作为爬虫外,Jsoup也适合作为网络请求的框架使用,替代HttpClient。作为轻量级的网络请求技术,Jsoup写法更加简单,更加轻便。

比如在请求各种JSON数据的时候,就可以使用Jsoup。


本文地址:http://blog.here325.com/detail/1248
版权说明:文章如无特别说明,则表明该文章为原创文章,如需要转载,请注明出处。
本站说明:本站使用阿里云服务器,如果您喜欢我的网站,欢迎收藏。

相关文章

后端开发