Beautifulsoup parse Selenium element - PullRequest
       7

Beautifulsoup parse Selenium element

0 голосов
/ 30 октября 2019

Я использую soup = BeautifulSoup(driver.page_source) для разбора всей страницы из Selenium в BeautifulSoup.

Но как просто разобрать один элемент Selenium в BeautifulSoup.

Ниже код выдаст

TypeError: объект типа 'FirefoxWebElement' не имеет len ()

element = driver.find_element_by_id(id_name)
soup = BeautifulSoup(element)

1 Ответ

2 голосов
/ 30 октября 2019

Я не знаю, делает ли селен это из коробки, но мне удалось найти этот обходной путь

element_html = f"<{element.tag_name}>{element.get_attribute('innerHTML')}</{element.tag_name}>"

, вы можете заменить innerHTML на innerTEXT, если хотите получитьтолько текст, например

<li>Hi <span> man </span> </li>

Получение innerHTML вернет все, что находится внутри, но innerTEXT не будет, попробуйте и посмотрите.

Теперь создайте ваш Soup объект

soup = BeautifulSoup(element_html)
print(soup.WHATEVER)

используя вышеописанную технику, просто создайте метод parseElement(webElement) и используйте его всякий раз, когда вы хотите проанализировать элемент.

Кстати, я использую только lxml, и когда я забыл набрать его, скрипт не работал

...