美文网首页
Jsoup获取动态js生成的内容

Jsoup获取动态js生成的内容

作者: 原始人y | 来源:发表于2021-06-16 11:03 被阅读0次

Jsoup本身是只能获取到静态页面的数据,并无法获取动态生成的内容,所以单单使用jsoup是无法获取到js生成的内容的。我这里使用了htmlunit来获取网页内容后,将网页转换成xml格式,再通过jsoup进行解析

1.依赖导入
一般Jsoup和HttpClient都是一起使用的,版本随意,可以无脑选择新版本

<dependencies>
    <!--httpclient-->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.2</version>
    </dependency>

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

    <!--htmlunit-->
    <dependency>
        <groupId>net.sourceforge.htmlunit</groupId>
        <artifactId>htmlunit</artifactId>
        <version>2.33</version>
    </dependency>
</dependencies>

2.简单的代码
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.*;

//使用Jsoup+Htmlunit下载动态js的内容
public class Test {

public static void main(String[] args) throws IOException {
    //Htmlunit模拟的浏览器,设置css,js等支持及其它的一些简单设置
    WebClient browser = new WebClient();
    browser.getOptions().setCssEnabled(false);
    browser.getOptions().setJavaScriptEnabled(true);
    browser.getOptions().setThrowExceptionOnScriptError(false);

    //获取页面
    HtmlPage htmlPage = browser.getPage("http://www.baidu.com");
    //设置等待js的加载时间
    browser.waitForBackgroundJavaScript(3000);

    //使用xml的方式解析获取到jsoup的document对象
    Document doc = Jsoup.parse(htmlPage.asXml());
    System.out.println(doc);
}

}
现在可以将获取到的org.jsoup.nodes.Document使用Jsoup的方式进行解析了!

相关文章

  • Jsoup获取动态js生成的内容

    Jsoup本身是只能获取到静态页面的数据,并无法获取动态生成的内容,所以单单使用jsoup是无法获取到js生成的内...

  • 【HtmlUnit】网页爬虫进阶篇

    之前,亦枫写过一篇关于使用 Jsoup 抓取网页内容的文章: 【Jsoup】HTML解析器,轻松获取网页内容 Js...

  • Java爬虫

    引入jsoup包 获取内容

  • (五)获取JS动态内容

    有关 JS 动态网页的爬取有一些网站的内容由前端的JS动态生成,由于呈现在网页上的内容是由JS生成而来,我们能够在...

  • 前端技术选型

    如果区分项目: 单页应用: 所有内容有 js 生成, 数据依靠 js 发请求获取所有内容都在前端生成JS 承担更多...

  • 2018-01-05

    今日学习内容 一、获取初始页面 二、Jsoup模拟浏览器 Document doc = Jsoup.connect...

  • 2018-04-19

    利用js将ajax获取到的后台数据动态加载至网页中 动态生成二级菜单树: jQuery(function($) {...

  • layui:table列宽屏幕自适应

    修改之前代码: 下面是写了个js方法,获取屏幕宽度再动态生成表头信息,代码如下: js: 效果如下:

  • loading data dynamically and as

    .py .html .js 异步加载数据,动态追加元素到页面,动态生成html标签中的内容。好处:It just ...

  • Android jsoup解析html、ncx文件

    android studio 引用jsoup compile 'org.jsoup:jsoup:1.10.3'js...

网友评论

      本文标题:Jsoup获取动态js生成的内容

      本文链接:https://www.haomeiwen.com/subject/wuuxyltx.html