在下面的示例中,我尝试访问每个“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
}
}
最佳答案
要查看需要打印 JSOUP
已加载的整个 HTML
页面的原因。您会注意到该页面在 Web 浏览器中的外观与 JSOUP
所看到的不同。看来您需要以某种方式启用 JavaScript
,它将使用 Ajax
请求正确加载页面。
请查看下面的链接
编辑: 但还有更好的解决方案。您可以注意到数据是在单独的调用中加载的。例如,浏览器会执行一次额外的调用来显示您提供的页面:
尝试下载它并使用Jackson
库来解析它。
关于Java - 如何使用 JSoup 访问 Div 的子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54317089/