【问题标题】:Is it possible to use Selenium to fetch page source, then use lxml to scrape data by xpath?是否可以使用 Selenium 获取页面源,然后使用 lxml 通过 xpath 抓取数据?
【发布时间】:2020-03-19 19:50:20
【问题描述】:

Selenium 可用于浏览网站(登录,获取网站页面的 html 源代码),

但是 Selenium 中没有任何东西可以通过xpath 查找/获取该 HTML 中的数据(find_element_by_xpath() 将查找元素,但不是标签之外的 TEXT 数据,因此必须使用其他东西,例如 lxml ),Selenium 绝对不能用于执行此操作,因为当您尝试时,它会引发错误。


没有任何使用 Selenium 获取 HTML 源代码的示例,将其传递给 lxml 以解析 HTML 并通过网络上任何地方的 xpath 查找/获取数据。
找不到了。

lxml 示例通常与 Python 'requests' 库一起给出,从该库中获取以字节为单位的响应 (response.content)。

lxml 使用这个response.content(字节),但是对于 lxml,没有函数接受 HTML 作为字符串。

Selenium 仅将 html 作为字符串返回:self.driver.page_source

那么在这里做什么呢?


我需要使用 lxml,因为它提供了 xpath 功能。

我不能使用 Python 的 requests 库来登录网站并导航到页面,因为他们的设计方式有些复杂,所以它不适用于该网站。

Selenium 是唯一可以登录、创建会话、在后续 GET 请求中传递正确 cookie 的东西。

我需要使用 selenium 和“page_source”(字符串),但我不确定如何转换为函数“lxml”所需的确切“字节”。


事实证明,使用 Python 进行抓取非常困难,因为这里的库不能协同工作,而且 Selenium 缺乏将 HTML 生成为字节的选项,

并且缺少 lxml 来接受字符串或字节形式的数据。


我们将不胜感激,但我不相信它可以得到解答,除非您特别遇到过这个问题,并且已经成功地一起使用了 Selenium + lxml。

【问题讨论】:

  • 是的,可以获取页面源,然后使用lxml。使用 'driver.page_source' 获取 html。

标签: python selenium lxml


【解决方案1】:

尝试以下方法,看看它是否适合您:

data = self.driver.page_source
doc = lxml.html.fromstring(data)
target = doc.xpath('some xpath')

【讨论】:

    猜你喜欢
    • 2014-06-22
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2012-09-29
    • 2018-01-27
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多