【问题标题】:Running selenium webdriver in amazon lambda python在亚马逊 lambda python 中运行 selenium webdriver
【发布时间】:2018-10-01 20:34:50
【问题描述】:

我想在 amazon lambda 中运行 BeautifulSoup 和 selenium webdriver,我的运行环境是 python 3.6。可以跑吗?如果是这样如何。我的意图是使用漂亮的汤 4 和硒从网页中删除数据(因为它必须删除由 javascript 动态生成的数据)。

【问题讨论】:

  • 您在尝试时遇到的错误是什么?
  • 无法导入模块“lambda_function”:没有名为“bs4”的模块,并且无法导入模块“lambda_function”:没有名为“Selenium”的模块@TarunLalwani
  • 你是否按照 lambda 的指示打包了这些模块?另外请记住,您的 lambda 中不会有 firefoxchrome。所以你需要有一个外部网格,你的lambda 需要它才能工作
  • 您也可以在不使用硒的情况下报废。如果您需要单击某个按钮或滚动然后检查网络选项卡中的 xhr 请求

标签: python python-3.x amazon-web-services selenium aws-lambda


【解决方案1】:

是的,这是可能的。你需要打包一个无头 Chrome 二进制文件和 chromedriver 以及你需要的所有 Python 包。您还需要在 Selenium 的 Chrome 网络驱动程序中设置几个选项才能使其正常工作。

在花了几个令人沮丧的几周尝试部署它之后,我写了一个 step-by-step tutorial

【讨论】:

    【解决方案2】:

    如果您要使用标准库之外的依赖项,您需要创建一个deployment package 并将其上传到 Lambda。

    我有一个write up,关于一起使用 BS4 和 Lambda。我没有在 Lambda 中使用 Selenium,但我确实拥有丰富的 Selenium 经验。您将无法使用 Lambda 在浏览器中执行命令。您将需要建立一个远程服务器,运行Selenium Server。在您希望进行网络抓取的机器上下载 Selenium 和 webdrivers,启动 .jar 文件,它将在 Selenium 将与之通信的机器上打开一个端口。

    考虑到您可能需要一台运行 Windows 的机器来启动浏览器并抓取这些页面,因此您最终可能不需要 lambda。

    【讨论】:

    • 您绝对可以在 Lambda 中使用 selenium,以此为起点:github.com/21Buttons/pychromeless
    • 你几乎可以无头运行任何应用程序......只要有一种方法可以不用鼠标来控制它
    猜你喜欢
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2019-12-21
    • 1970-01-01
    相关资源
    最近更新 更多