java中使用jsoup解析html

    技术2022-07-10  112

    在爬虫技术中,可以分为两个阶段:

    一、获取到目标地址url的html内容

    二、解析获取到的html内容并选择想要的片段,比如标题、作者、内容等信息

    第一个阶段,我们在java里面可以使用httpclient来实现,通过httpclient可以获取到目标地址的html内容,这我们在之前已经说过很多了,如何从获取到的html内容中摘取自己想要的片段呢?使用到的技术可以有很多种,我们在这里介绍一个,叫做jsoup的东西。

    引入jsoup:

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

    使用jsoup很简单,我们举个例子:

    Document document = Jsoup.parse(html); Elements divTags = document.select("div.text"); int size = divTags.size(); for (int i = 0; i < size; i++) { Element element = divTags.get(i); System.out.println(element.text()); }

    上边简单的几行代码的作用是获取含有text这个css类的div。其中html指的是html字符串,可以是一个完整的html(包含<!DOCTYPE html>,head....即普通的html文档),也可以是html片段,我们可以通过这个html字符串来创建一个org.jsoup.nodes.Document对象,通过这个document对象的select方法,select方法定义如下:

    Elements org.jsoup.nodes.Element.select(String cssQuery)

    cssQuery可以是任何合法的css选择器,比如我们上边写的div.text。

    好了,使用jsoup就是这么简单,希望能够帮到你。下面再来个实例:

    java代码:

    import java.io.File; import org.apache.commons.io.FileUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class App { public static void main(String[] args) throws Exception{         try {             String html = FileUtils.readFileToString(new File("D:\\zhao\\b.html"), "utf-8");             Document document = Jsoup.parse(html); Elements divTags = document.select("div.text"); int size = divTags.size(); for (int i = 0; i < size; i++) { Element element = divTags.get(i); System.out.println(element.text()); }         } catch (Exception e) {             e.printStackTrace();         }  } }

    执行结果:

    这里要理解,创建jsoup的document对象的参数是html字符串即可,而你这个HTML字符串可以是从本地文件中读取过来的,也可以上httpclient从网上请求爬取过来的。

    Processed: 0.016, SQL: 9