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,当我忘记输入它时,脚本无法运行
我使用 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,当我忘记输入它时,脚本无法运行