Странный код элемента nav не виден в исходном коде страницы - PullRequest
0 голосов
/ 01 октября 2018

Привет, я пытаюсь собрать все ссылки на этой странице: https://www.biblico.it/index.html с использованием селена и jsoup.Моя проблема в том, что я не могу собрать ссылки в навигационном меню.Например, <a href="authorities.html">Authorities</a> и <a href="#">Who&nbsp;we&nbsp;are</a> отсутствуют в исходном коде страницы, но я могу видеть их код, используя метод «проверять элемент» в хроме.

Я понимаю, что они генерируются на лету в какой-то страннойКстати, но я не знаю, как их собрать.Может кто-нибудь помочь мне?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Проблема заключалась в том, что Jsoup не может работать с элементами, сгенерированными на лету каким-либо сценарием, и сгенерированные на лету элементы никогда не отображаются с помощью параметра «Просмотр источника страницы» в любом браузере.С другой стороны, функция «проверить элемент» в Chrome может отображать код этих элементов на лету.Я обнаружил, что метод WebElement.GetAttribute () на самом деле работает как функция «осмотреть элемент» в chrome, и это решает мою проблему.Таким образом, Java-код для захвата всех ссылок в https://www.biblico.it/index.html:

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();
        }
0 голосов
/ 01 октября 2018

У нас с другом тоже была эта проблема вчера.Он устанавливает расширение Chrome, которое позволяет просматривать относительный путь Xml и абсолютные пути для данного элемента на странице.Затем вы можете использовать селен, чтобы найти его по xpath.

Извините, если вам не хватает дополнительной информации, но этого должно быть достаточно, чтобы вас куда-то доставить.

...