Java Jsoup-从隐藏代码的html url读取

Java Jsoup-从隐藏代码的html url读取,java,html,jsoup,Java,Html,Jsoup,我正在尝试使用jsoup库从网站上获取“li”。问题是: 如果我用CTRL+U打开网站源代码(这与jsoup读取的内容相同),那么“ul”标记将被隐藏 如果我用谷歌浏览器的“检查代码”功能打开代码,就会显示“li” 无需张贴代码;我只想知道如何使用jsoup或其他java自由库访问此“li”,而在源代码(以及通过jsoup)中,这些信息是隐藏的 该站点正在运行并尝试搜索某些内容(如Tachi)Jsoup的问题是它无法处理脚本。它只是在执行AJAX代码之前获得html 您可以使用类似的

我正在尝试使用jsoup库从网站上获取“li”。问题是:

  • 如果我用CTRL+U打开网站源代码(这与jsoup读取的内容相同),那么“ul”标记将被隐藏

  • 如果我用谷歌浏览器的“检查代码”功能打开代码,就会显示“li”

无需张贴代码;我只想知道如何使用jsoup或其他java自由库访问此“li”,而在源代码(以及通过jsoup)中,这些信息是隐藏的


该站点正在运行并尝试搜索某些内容(如Tachi)

Jsoup的问题是它无法处理脚本。它只是在执行AJAX代码之前获得html

您可以使用类似的东西,这基本上是一个没有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());
    }

我无法检查代码,因为网站的证书配置不正确,我不想导入它的证书。您可能需要查看以解决证书错误。

JSoup不执行所有脚本,它只获取服务器返回的HTML。您要查找的是调用呈现的HTML,即浏览器在执行所有脚本后生成的HTML

Java中的最佳解决方案是与首选浏览器一起使用。Selenium是为UI测试而开发的,但是它作为一种刮片工具非常流行

一个好的入门页面将被找到

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));

你能至少发布网站的链接吗?如果没有能力重现问题,你很难得到帮助。如果它们是这种情况的不同潜在原因,并且每一个都应该以不同的方式解决,那该怎么办。回答你的问题可能需要写一篇很好的文章。请回答您的问题,并提供最少量的信息,以便我们重现此问题。@Shakhar posted:-)@Pshemo每次在网站上搜索内容时,问题都会重现。谢谢!我添加了webClient选项wco=webClient.getOptions();和wco.setUseSecureSSL(true);避免使用证书。如何加快代码的速度@舍海尔