Beautifulsoup 解析 Selenium 元素

Beautifulsoup parse Selenium element

我使用 soup = BeautifulSoup(driver.page_source) 从 BeautifulSoup 中的 Selenium 解析整个页面。

但是如何只解析 BeautifulSoup 中的一个 Selenium 元素。

下面的代码将抛出

TypeError: object of type 'FirefoxWebElement' has no len()

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

我不知道 selenium 是否开箱即用,但我设法找到了这个解决方法

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

如果您只想获取文本,您可能需要将 innerHTML 替换为 innerTEXT,例如

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

获取 innerHTML 将 return 里面的所有内容,但 innerTEXT 不会,试试看。

现在创建您的 Soup 对象

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

使用上述技术,只需创建一个方法 parseElement(webElement) 并在您想要解析元素时使用它。

顺便说一句,我只使用 lxml,当我忘记输入它时,脚本无法运行