我正在尝试使用jsoup库从网站上获取“li”。问题是:
不需要发布代码;我只想知道如何使用jsoup或其他java免费库访问这个'li',而在源代码中(以及通过jsoup)这些信息是隐藏的。
该网站为https://farmaci.agenziafarmaco.gov.it/bancadatifarmaci/cerca-farmaco并尝试搜索某些内容(即Tachi)
答案 0 :(得分:1)
Jsoup的问题在于它不会处理脚本。它只是在执行AJAX代码之前获得html。
您可以使用类似HtmlUnit的内容,它基本上是一个无GUI的浏览器。所以,它可以处理脚本。
获得HtmlUnit库后可以尝试这样的事情:
String url = "https://farmaci.agenziafarmaco.gov.it/bancadatifarmaci/cerca-farmaco?search=Tachi";
try(final WebClient webClient = new WebClient()) {
final HtmlPage page = webClient.getPage(url);
final HtmlUnorderedList list = page.getHtmlElementById("ul_farm_results");
System.out.println(list.asText());
}
我无法检查代码,因为网站的证书配置不正确,我不想导入它的证书。您可能需要查看this以解决证书错误。
答案 1 :(得分:0)
JSoup不执行所有脚本,它只获取服务器返回的HTML。您正在寻找的是调用呈现HTML,即执行所有脚本后浏览器生成的HTML。
Java中最好的解决方案是在您首选的浏览器中使用Selenium。 Selenium是为UI测试而开发的,但它作为刮削工具非常受欢迎。
找到一个很好的入门页面here。
Firefox的一些代码示例:
WebDriver driver = new FirefoxDriver();
driver.get("https://farmaci.agenziafarmaco.gov.it/bancadatifarmaci/cerca-farmaco");
// Find the element
String id = "ul_farm_results";
WebElement element = driver.findElement(By.id(id));