Python selenium .get_attribute ('inner HTML') возвращает значение, которое отличается от значения в источнике страницы - PullRequest
0 голосов
/ 03 августа 2020

Я разбираю таблицу, содержащую URL-адреса с помощью Selenium.

Некоторые URL-адреса обрабатываются некорректно. Например:

  1. Как URL отображается в источнике и на странице: http://domain.tld/forum/viewtopic.php?f=4&t=25&view=next
  2. Как URL отображается после использования .get_attribute('innerHTML') или Copy element в инструменте проверки браузера : http://domain.tld/forum/viewtopic.php?f=4&t=25&view=next.

Как видите, в этом случае он добавляет amp; после каждого &. Как сделать вывод именно таким, как в первом случае? Я пробовал использовать innerHTML и text в качестве атрибутов. text возвращает None.

Код, который получает URL-адреса из таблицы, приведен ниже:

rows = driver.find_element_by_tag_name('tbody').find_elements_by_tag_name('tr')
                for row in rows:
                    fields = row.find_elements_by_tag_name('td')
                    url = fields[0].get_attribute('innerHTML')

Я использую Firefox в качестве браузера здесь.

1 Ответ

0 голосов
/ 03 августа 2020

UPD: text не возвращал значения из строк, которые не были в видимой области (не уверен насчет этого) o_O

Изначально я использовал html2text библиотеку.

The следующий код возвращает данные, как задумано:

from html2text import HTML2Text as H2T
  
rows = driver.find_element_by_tag_name('tbody').find_elements_by_tag_name('tr')
                    for row in rows:
                        fields = row.find_elements_by_tag_name('td')
                        url = H2T().handle(fields[0].get_attribute('innerHTML')).strip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...