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

时间:2019-01-22 22:00:34

标签: java html jsoup

在下面的示例中,我尝试访问每个“内容区域”的子项“ div.searchRcrd”,但是我迷失了如何访问它们的方式。我制作了一个快速程序来尝试突出显示我的问题,使用打印语句显示它无法访问正确的信息。我尝试将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

1 个答案:

答案 0 :(得分:1)

要查看原因,您需要打印整个HTML页,JSOUP已加载。您会注意到该页面在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库对其进行解析。