您好,我正在尝试使用硒和jsoup收集此页面中的所有链接:https://www.biblico.it/index.html。
我的问题是我无法收集导航菜单中的链接。
例如,页面源中不存在<a href="authorities.html">Authorities</a>
和<a href="#">Who we are</a>
,但我可以使用铬中的“检查元素”方法查看其代码。
我知道它们是通过某种奇怪的方式即时生成的,但是我不知道如何收集它们。有人可以帮我吗?
答案 0 :(得分:0)
我和一个朋友昨天也有这个问题。他安装了chrome扩展程序,该扩展程序允许您查看相对Xml路径以及页面上给定元素的绝对路径。然后,您可以使用硒通过xpath找到它。
很抱歉,如果您缺少更多信息,但是足以让您到某个地方。
答案 1 :(得分:0)
问题是Jsoup无法使用某些脚本动态生成的元素,并且在任何浏览器中都不会使用“查看页面源代码”选项来显示动态生成的元素。另一方面,Chrome中的“检查元素”功能可以在生成的元素上实时显示这些代码。我发现方法WebElement.GetAttribute()实际上像chrome中的“检查元素”功能一样,可以解决我的问题。 因此,抓取https://www.biblico.it/index.html中所有链接的Java代码是:
System.setProperty("webdriver.chrome.driver","/usr/local/bin/chromedriver");
WebDriver driver = new ChromeDriver();
try{
driver.get("https://www.biblico.it/index.html");
List<WebElement> links = ((ChromeDriver) driver).findElementsByTagName("a");
for(WebElement link: links) {
if (link != null) {
String text = link.getAttribute("innerHTML");
String href = link.getAttribute("href");
System.out.println(text+" "+href);
}
}
driver.close();
} catch (Exception e) {
e.printStackTrace();
}