页面源中未显示奇怪的导航元素代码

时间:2018-10-01 09:07:00

标签: javascript php html google-chrome nav

您好,我正在尝试使用硒和jsoup收集此页面中的所有链接:https://www.biblico.it/index.html。 我的问题是我无法收集导航菜单中的链接。 例如,页面源中不存在<a href="authorities.html">Authorities</a><a href="#">Who&nbsp;we&nbsp;are</a>,但我可以使用铬中的“检查元素”方法查看其代码。

我知道它们是通过某种奇怪的方式即时生成的,但是我不知道如何收集它们。有人可以帮我吗?

2 个答案:

答案 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();
        }