【问题标题】:Beautifulsoup parse Selenium elementBeautifulsoup 解析硒元素
【发布时间】:2019-10-30 02:05:57
【问题描述】:

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

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

下面的代码会抛出

TypeError: 'FirefoxWebElement' 类型的对象没有 len()

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

【问题讨论】:

  • 试试 BeautifulSoup(element.text, 'lxml'), lxml 是解析器
  • @AhmedI.Elsayed element.text 只会返回文本,并丢失所有标签。
  • 你想得到一个像 <div> Hi </div> 这样的元素,对吧?
  • 是的,里面可能有很多子标签。
  • 我回答了,看看

标签: python html selenium beautifulsoup element


【解决方案1】:

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

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,当我忘记输入时,脚本不起作用

【讨论】:

    猜你喜欢
    • 2016-10-25
    • 2020-06-22
    • 1970-01-01
    • 2015-04-10
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多