Google Cloud Platform - 部署一个启动 webdriver 的云函数

Posted

技术标签:

【中文标题】Google Cloud Platform - 部署一个启动 webdriver 的云函数【英文标题】:Google Cloud Platform - Deploy a Cloud Function that starts a webdriver 【发布时间】:2020-02-01 15:27:12 【问题描述】:

我正在 GCP 上定义一个云函数,用于在 Python 中抓取网站。

我从定义一个简单地打开 webdriver 的函数开始:

from selenium import webdriver

def launch_search(request):
    # Starting a webdriver
    driver = webdriver.Chrome()
    return 'Success'

这个功能不起作用(Error: could not handle the request 当我触发它时),可能是因为我的远程机器上没有安装 Chrome 驱动程序。因此:

如何安装? 或者我可以使用 Selenium 抓取网页,而无需使用网络驱动程序打开页面吗?

【问题讨论】:

【参考方案1】:

鉴于 Cloud Functions 是无服务器的,您无法控制服务器机器。 您可以使用其他可管理的服务,例如GCE 或GKE

【讨论】:

【参考方案2】:

您目前无法使用 Python 运行 Selenium 脚本。公共问题跟踪器中有一个功能请求,目前为此开放,可以找到here。

作为替代方案,您可以将 Node.JS 与 Puppeteer 一起使用。我发现 this 博客文章详细介绍了一个用例。

【讨论】:

非常感谢,这很有帮助。你知道我可以使用 Python 来自动化我的 Selenium 脚本的任何其他云服务吗? 通过快速搜索,您可以尝试一下 SeleniumBase:github.com/seleniumbase/SeleniumBase/tree/master/integrations/… 您也可以将其托管在 Heroku youtube.com/watch?v=Ven-pqwk3ec【参考方案3】:

看起来可以在 Google Cloud Functions 上运行 selenium。如果你对 javascript/TypeScript 示例而不是 Python 感到满意,我建议你试试这个模板:https://github.com/ccorcos/gcloud-functions-selenium-boilerplate

【讨论】:

以上是关于Google Cloud Platform - 部署一个启动 webdriver 的云函数的主要内容,如果未能解决你的问题,请参考以下文章

使用新的 Google Cloud 日志记录 jar 时,日志未显示在 Google Cloud Platform Stackdriver 中

Google Cloud Platform:Cloud Functions 与 App Engine

Google Cloud Platform - AI Platform:为啥调用 API 时会得到不同的响应正文?

Google Cloud Platform:无法通过API在Storage中上传新文件版本

保存Google Cloud Platform服务帐户凭据的位置

使用Google Cloud Platform的Fastai