在 Google Colab 中运行 Selenium WebDriver
在 Google Colab 中运行 Selenium WebDriver
如果您需要在 Google Colab 中为您的分析项目抓取数据,则无需事先构建单独的网络抓取工具。
与其将 Google Colab 视为 Ipython Notebook,不如将其视为一个成熟的计算单元。您不仅可以执行 Python 代码、HTML 或 LaTeX,还可以在 Colab 中执行 Bash 命令。这反过来又使我们能够在 Colab 中安装 Selenium 和 WebDriver。
好的,但我为什么需要它?
在另一个计算单元上部署网络爬虫 释放您的本地计算机计算资源和互联网连接 .如果你跑 Selenium 多线程 ,有时由于后台运行的并发实例数量,程序可能会占用千兆字节的 RAM。如果您使用较旧的机器或没有足够的 RAM,则使用云上的计算单元可以为您提供很大帮助。此外,您现在可以使用您的机器完成另一项任务,同时等待网络抓取工具完成其工作。
Colab 还使用 Google 的互联网连接来运行请求和获取数据。这意味着您不必花费自己的带宽来获取所有成千上万的 HTML 页面、CSS 样式表和 JS 脚本。如果您在偏远的地方并且没有非常可靠的互联网连接,这将特别有用。但是,如果您这样做,此技术会释放您的带宽,并让您完成 Warzone 的 100GB 更新……或任何其他需要您分享带宽的任务。
最重要的是,Colab 是免费的。没有什么能打败它。
这个怎么运作
让我们从使用开始 易于
& PIP 通过编写下面的代码来安装 Selenium 和 WebDriver。请注意,这三个命令前面是 !
因为之后出现的任何东西 !
on a line 将由系统命令行执行。
Code for installing Selenium and WebDriver in Colab.
一切都安装好后,在 Colab 中一切照旧。就像在本地机器上一样编写 Selenium 代码。让我们通过抓取印度尼西亚最大的电子商务网站之一 Tokopedia.com 的页面源来测试一下。
首先,让我们使用正确的选项设置 WebDriver。下面的代码将 WebDriver 设置为无头模式,同时也使其不同于人工操作的浏览器。这些设置来自这个 博文 来自 webscraping.pro 的 Igor Savinkin,他提出了一个绝妙的主意,即针对人工操作和自动浏览器测试参数和设置,看看指纹程序是否可以区分两者。
Driver setup options for Selenium.
并编写一些代码来返回页面源。
A small code that returns a page source.
现在,如果我们尝试运行代码..
Selenium successfully returns HTML of Tokopedia. Actually there is no need to prettify the source like I do.
瞧!我们得到 HTML。容易,对吧?
等等,我仍然无法运行 Selenium! 😦
如果您收到类似的消息 WebDriverException:消息:未知错误:Chrome 无法启动:异常退出
,这意味着 Chrome 无法启动。我将解释为什么。
当您第一次运行 Selenium 时,您通常会看到 Selenium 在前台自动为您打开一个浏览器。在这种情况下,您可以看到 Selenium 在做什么;点击链接、滚动等。这是 带头 浏览器的版本。但是,我们无法运行这个 Selenium 实例,因为浏览器的安装在 Colab 实 无头 模式开启。如果您想了解如何使用此功能,请参阅驱动程序设置部分。
Colab 是否对资源有任何限制?
“Colab 中可用的资源会随着时间的推移而变化,以适应需求的波动,以及适应整体增长和其他因素”——谷歌
简而言之, 谷歌确实限制了 Colab 的资源 在飞行中。存储、内存、处理器以及带宽。事情是, 资源永远得不到保障 在 Colab 实例上,因此我们无法确定 Colab 将为我们提供多少资源。您的执行可能运行多长时间也有限制。在免费版本中,即 长达 12 小时 .如果您正确设置 Selenium,您仍然可以在 12 小时内获得大量数据。您甚至可以将 Selenium 设置为在 12 小时标记完成后继续提取,但这是另一篇文章的主题。
另请记住,负责任地使用网络抓取工具并为您的请求计时。不要试图让互联网瘫痪。 使用 Colab 进行 DoS 攻击是严格禁止和非法的 .
如果你能做到这一点,谢谢。我希望这个故事对你的旅程有所帮助。如有错误,欢迎评论,喜欢就鼓掌。谢谢你。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明