在下面的示例中,我尝试访问每个“内容区域”的子项“ 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
}
}
答案 0 :(得分:1)
要查看原因,您需要打印整个HTML
页,JSOUP
已加载。您会注意到该页面在Web浏览器中和JSOUP
所看到的外观有所不同。看来您需要以某种方式启用JavaScript
,它将使用Ajax
请求正确加载页面。
请在下面的链接上查看
编辑: 但是,还有更好的解决方案。您会注意到数据是在单独的调用中加载的。例如,浏览器再打一个电话以显示您提供的页面:
尝试下载它并使用Jackson
库对其进行解析。