Java中使用jsoup进行HTML解析和提取

=Start=

缘由:

在整理如何使用Java发起HTTP请求的过程中,发现了一篇内容非常详细的文章,其在最后附带了一个「Parsing and extracting HTML」的内容,刚好是我比较感兴趣和需要的内容,所以实际验证测试了一遍之后在此整理出来,方便以后参考和使用。

正文:

参考解答:

几乎所有已知的HTML解析器都实现了W3C的DOM API(是JAXP API(Java提供的用于进行XML处理的API)的一部分),并返回给你一个org.w3c.dom.Document文档对象——可直接被JAXP API使用。主要的不同之处在于各自的特性上面。

一般来说:

现在(各HTML解析器)各自的优缺点应该已经足够清楚了。如果你只是想使用标注的JAXP API进行遍历,使用第一类即可(具体根据你的需求和它们的各自特点还有库的健壮性进行选择);如果要对HTML做单测,请选择第二类HtmlUnit;如果要从HTML中提取特定的数据,选择Jsoup吧。

更多更详细的用法可以参考「jsoup的官方文档」以及「JSoup快速入门」一文,根据自己的实际需求进行选用。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4412.html

《Java中使用jsoup进行HTML解析和提取》上有5条评论

  1. Google搜索结果页面中的链接地址的jQuery选择器
    https://www.google.com.hk/search?num=100&site=&source=hp&q=filetype%3Ajsp&oq=filetype%3Ajsp

    -- 先通过GET参数设定搜索结果个数为100

    #rso > div > div > div:nth-child(1) > div > div > div.r > a:nth-child(1) > div > cite
    #rso > div > div > div:nth-child(2) > div > div > div.r > a:nth-child(1) > div > cite
    ...
    #rso > div > div > div:nth-child(101) > div > div > div.r > a:nth-child(1) > div > cite

    -- JS Path
    document.querySelector('#rso > div > div > div:nth-child(101) > div > div > div.r > a:nth-child(1) > div > cite')

    -- XPath
    //*[@id="rso"]/div/div/div[100]/div/div/div[1]/a[1]/div/cite

  2. Java Jsoup 如何将获取到的内容存成HTML文件?
    https://stackoverflow.com/questions/24696766/how-to-save-a-jsoup-document-to-an-html-file

    // 为了避免jsoup进行过滤,请使用下面的方式来获取原始HTML内容
    Connection.Response html = Jsoup.connect("PUT_URL_HERE").execute();
    System.out.println(html.body());

    // 另一种方法
    // https://mvnrepository.com/artifact/commons-io/commons-io
    import org.apache.commons.io.FileUtils;

    public void downloadPage() throws Exception {
    final Response response = Jsoup.connect("http://www.example.net").execute();
    final Document doc = response.parse();

    final File f = new File("filename.html");
    FileUtils.writeStringToFile(f, doc.outerHtml(), "UTF-8");
    }

发表评论

电子邮件地址不会被公开。 必填项已用*标注