jsoup是一个用于解析、提取、操作HTML的开源Java函式库。

引入对应包

  1. <dependency>
  2. <groupId>org.jsoup</groupId>
  3. <artifactId>jsoup</artifactId>
  4. <version>1.14.3</version>
  5. </dependency>

基本案例

  1. Connection connection = Jsoup.connect(url).ignoreContentType(true);
  2. connection.header("Accept", "text/html, application/xhtml+xml, */*");
  3. connection.header("Content-Type", "application/x-www-form-urlencoded");
  4. connection.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36");
  5. connection.proxy("127.0.0.1", 10809);
  6. connection.timeout(3000);
  7. Document doc = connection.get();

Jsoup 解决异步Ajax请求

HtmlUnit

  1. <dependency>
  2. <groupId>net.sourceforge.htmlunit</groupId>
  3. <artifactId>htmlunit</artifactId>
  4. <version>2.56.0</version>
  5. </dependency>

请求案例

  1. WebClient browser = new WebClient(BrowserVersion.CHROME);
  2. browser.getOptions().setThrowExceptionOnScriptError(false);
  3. browser.getOptions().setThrowExceptionOnFailingStatusCode(false);
  4. browser.getOptions().setCssEnabled(false);
  5. browser.getOptions().setJavaScriptEnabled(true);
  6. // 设置网页超时时间
  7. browser.getOptions().setTimeout(6000);
  8. browser.setAjaxController(new NicelyResynchronizingAjaxController());
  9. // 异步JS执行需要耗时,所以这里线程要阻塞6秒,等待异步JS执行结束
  10. browser.waitForBackgroundJavaScript(6000);
  11. HtmlPage htmlPage = browser.getPage(url);

Jsoup 常见方法介绍

Jsoup 类下常见方法

方法名称 描述
static Connection connect(String url) 创建并返回URL的连接。
static Document parse(File in, String charsetName) 将指定的字符集文件解析成文档。
static Document parse(File in, String charsetName, String baseUri) 将指定的字符集和baseUri文件解析成文档。
static Document parse(String html) 将给定的html代码解析成文档。
static Document parse(String html, String baseUri) 用baseUri将给定的html代码解析成文档。
static Document parse(URL url, int timeoutMillis) 将给定的URL解析为文档。
static String clean(String bodyHtml, Whitelist whitelist) 将输入HTML返回安全的HTML,通过解析输入HTML并通过允许的标签和属性的白名单进行过滤。