Java - 如何使用 JSoup 访问 Div 的子级

标签 java html jsoup

在下面的示例中,我尝试访问每个“div.searchRcrd”(“content-area”的子级),但我迷失了如何访问它们。我制作了一个快速程序,试图突出我的问题,使用打印语句来显示它没有访问正确的信息。我尝试将 doc.select 更改为其他变体,例如 (“div.content-area div.searchRcrd”),但无济于事。

在发帖之前,我已经浏览了 stackoverflow,但我完全迷失在这个问题上。一如既往,我很感谢任何关于我在这方面出错的地方的建议。

public class Main 
{
    // retrieve page source code
    Document doc = Jsoup.connect("https://uk.webuy.com/search/?categoryIds=1040&view=list&inStock=1").get();

    // find all of the div rows in content-area
    org.jsoup.select.Elements rows = doc.select("div.content-area div");
    ListIterator<Element> itr = rows.listIterator();

    // loop over each row
    while (itr.hasNext()) 
    {
        Element row = itr.next();
        System.out.println("Test"); //Prints out 5 times instead of the multiple I expect

    }
}

enter image description here

最佳答案

要查看需要打印 JSOUP 已加载的整个 HTML 页面的原因。您会注意到该页面在 Web 浏览器中的外观与 JSOUP 所看到的不同。看来您需要以某种方式启用 JavaScript,它将使用 Ajax 请求正确加载页面。

请查看下面的链接

  1. Page content is loaded with JavaScript and Jsoup doesn't see it

编辑: 但还有更好的解决方案。您可以注意到数据是在单独的调用中加载的。例如,浏览器会执行一次额外的调用来显示您提供的页面:

https://wss2.cex.uk.webuy.io/v3/boxes?inStock=1&categoryIds=[1040]&firstRecord=1&count=50&sortBy=relevance&sortOrder=desc

尝试下载它并使用Jackson库来解析它。

关于Java - 如何使用 JSoup 访问 Div 的子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54317089/

相关文章:

java - slf4j log4j Hello World 问题

java - Android 4.3 果冻 bean 时间格式问题

java - EJB 避免非常长的事务(Wildfly)

html - 如何处理应该出现在另一个父级之上的子级的两个父级 div

java - 如何在crawler4j中适配我要爬取的URL

java - 2D 图形问题 - 可能是逻辑

javascript - 页面加载时 iFrame 中的 XMLHttpRequest POST

javascript - 检查 Javascript 中的按钮是否被单击

java - Jsoup 仅选择带有其他元素的 div 中的文本

java - 如何使用 jsoup 删除标签但保留给定的标签