使用 web 驱动程序从 python 中的源页面获取所有文本

Posted

技术标签:

【中文标题】使用 web 驱动程序从 python 中的源页面获取所有文本【英文标题】:Using web driver to get all text from a source page in python 【发布时间】:2016-12-19 23:32:44 【问题描述】:

我正在使用 selenium webdriver (firefox) 从网站上抓取一些数据。我刚刚发现打开网页比打开该网页的源代码要慢。换句话说,去'www.google.com'比去'view-source:www.google.com'花费的时间要长得多

所以我想知道是否可以使用 webdriver 从源页面而不是普通页面获取所有文本。

我尝试将 driver.page_source 用于源页面,但它返回了一些我不想要的混乱。

【问题讨论】:

【参考方案1】:

如果您只需要源代码,请使用requests。用 pip 安装:

pip install requests

然后像这样使用它:

import requests

r = requests.get("http://google.com/")
# r.content, r.text, r.json(), r.status can be used

有关高级用法,请参阅上面的文档。

注意:如果您需要解析 html,请使用 BeautifulSoup 并将其传递给 r.content

【讨论】:

是的,但我必须使用网络驱动程序,因为我需要手动通过 rechaptcha 检查。 This 应该为您提供获取源代码的选项。此外,为了优化加载速度,您可以禁用像 here 这样的图像。 @user3182260 为了通过验证码检查,您可能需要渲染页面,而不仅仅是下载源代码。您可以尝试 PhantomJS 而不是 Selenium + 浏览器。或者,它可能会在其他浏览器中渲染得更快。

以上是关于使用 web 驱动程序从 python 中的源页面获取所有文本的主要内容,如果未能解决你的问题,请参考以下文章

Kivy,从python文件更改画布的源图片

如何从 gstreamer 中的源请求更多缓冲区?

从一页打印html不会显示所有带有python和urllib2的源页面[重复]

将资源文件夹目录从目标类更改为 Java 中的源

此页面正在尝试从 sslforfree 的 ssl 之后从未经身份验证的源加载脚本

在 Flutter 中 - 从 Web 浏览器中的 PayPal 完成交易页面返回后,如何将用户推送到应用程序中的“谢谢”页面