用 Jsoup 提取 "hidden" HTML

Extracting "hidden" HTML with Jsoup

我正在尝试获取未出现在源文档中但可以公开的 HTML 数据,例如 "inspect element" 在 Google Chrome 中.

示例页面:http://assignment.uspto.gov/#/search?q=9000000&sort=patAssignorEarliestExDate%20desc%2C%20id%20desc&synonyms=false

有许多 div 个元素包含 U.S 的分配数据。

行下方出现的专利号 9,000,000
<script async="async" type="text/javascript" src="https://components.uspto.gov/js/ais/2-2-assignment-search.js"></script>

有没有办法用 Jsoup 提取这个隐藏的 html?

数据似乎加载 AJAX。 JSoup 不处理 Javascript.

您需要的是 "headless browser" API,它处理 Java 脚本而不实际渲染任何内容。

HtmlUnit 似乎是最著名的工具,尽管我自己从未使用过它。如前所述,Selenium Webdriver 也是一个选项。

我相信你将不得不加载 URL,等待所有 AJAX 处理,你最终会得到与 Chrome 中几乎相同的解析树Java随心所欲!

如果这是您唯一需要的信息,这里是您要查找的信息的 JSON url:

http://prod-proxy-lb-2117675230.us-east-1.elb.amazonaws.com/solr/aotw/search?json.wrf=jQuery1102004354461841285229_1448413727331&q=9000000&facet.date.other=before&rows=20&start=0&wt=json&facet.date.start=NOW%2FYEAR-50YEARS&fl=id%2CreelNo%2CframeNo%2CconveyanceText%2CpatAssigneeName%2CpatAssignorName%2CinventionTitleFirst%2CapplNumFirst%2CpublNumFirst%2CpatNumFirst%2CintlRegNumFirst%2CcorrName%2CcorrAddress1%2CcorrAddress2%2CcorrAddress3%2CpatAssignorEarliestExDate%2CfilingDateFirst%2CpublDateFirst%2CissueDateFirst%2CintlPublDateFirst%2CpatNumSize&hl.fl=reelNo%2CframeNo%2CpatAssigneeName%2CpatAssignorName%2CconveyanceText%2CinventionTitleFirst%2CapplNumFirst%2CpublNumFirst%2CpatNumFirst%2CintlRegNumFirst%2CcorrName%2CcorrAddress1%2CcorrAddress2%2CcorrAddress3&hl.requireFieldMatch=true&sort=patAssignorEarliestExDate+desc%2C+id+desc

这是通过检查 Chrome 开发者工具的“网络”选项卡检索到的,您可以使用 HttpConnection 获取此 url 的内容。可以找到一个示例 here。获得 JSON 文件后,您可以解析它以检索您需要的任何信息。