You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Amazon Lambda(Python3.6)中运行BeautifulSoup与Selenium可行吗?如何实现?

在Amazon Lambda(Python 3.6)运行BeautifulSoup + Selenium的方案

当然可行!我之前帮不少开发者搞定过在Lambda上运行Selenium配合BeautifulSoup抓取JS动态内容的场景,刚好适配你指定的Python 3.6环境,下面给你一步步拆解操作流程:

一、核心前提说明

Lambda默认的Python 3.6环境没有预装Selenium、浏览器驱动以及BeautifulSoup4,所以我们需要自行打包这些依赖,并且要注意必须在Linux环境下打包(Lambda运行在Amazon Linux 2系统上),否则直接在Windows/macOS安装的依赖会因为系统架构不兼容而报错。

二、步骤1:准备依赖包和浏览器组件

  1. 创建一个本地打包目录,比如lambda_package
  2. 安装Python依赖:
    # 安装BeautifulSoup4到打包目录
    pip install beautifulsoup4 -t ./lambda_package
    # 安装适配Python3.6的Selenium版本(Selenium 4.x部分版本不再支持Python3.6,建议用3.141.0这个稳定版)
    pip install selenium==3.141.0 -t ./lambda_package
    
  3. 下载适配Amazon Linux的Chrome组件:
    • 下载headless Chrome二进制文件(Lambda只能运行无界面浏览器),选择适合Amazon Linux 2的版本(比如Chrome 90+系列)
    • 下载对应版本的ChromeDriver(必须和Chrome版本严格匹配)
    • 把Chrome二进制文件和ChromeDriver都放到lambda_package目录里,并重命名方便调用(比如chrome和chromedriver),还要给它们添加执行权限:
      chmod +x ./lambda_package/chrome ./lambda_package/chromedriver
      

三、步骤2:编写Lambda函数代码

创建lambda_function.py,放到lambda_package目录下,示例代码如下:

import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup

def lambda_handler(event, context):
    # 配置Chrome选项,适配Lambda环境
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument('--disable-gpu')
    chrome_options.binary_location = os.path.join(os.getcwd(), 'chrome')

    # 初始化ChromeDriver
    driver = webdriver.Chrome(
        executable_path=os.path.join(os.getcwd(), 'chromedriver'),
        options=chrome_options
    )

    try:
        # 访问目标网页,等待JS加载(可根据需求添加显式等待优化)
        driver.get("https://your-target-url.com")
        # 获取渲染后的页面源码
        page_source = driver.page_source
        
        # 用BeautifulSoup解析页面
        soup = BeautifulSoup(page_source, 'html.parser')
        # 这里写入你的解析逻辑,比如提取动态生成的内容
        target_data = soup.find_all('div', class_='dynamic-content')
        
        return {
            'statusCode': 200,
            'data': [item.get_text() for item in target_data]
        }
    finally:
        # 确保关闭浏览器,释放Lambda资源
        driver.quit()

四、步骤3:打包并部署到Lambda

  1. 进入lambda_package目录,把所有文件打包成zip包:
    cd lambda_package
    zip -r lambda_deploy.zip .
    
    注意:不要把lambda_package目录本身打包进去,要把目录里的所有文件(包括依赖、浏览器组件、lambda_function.py)放到zip包的根目录。
  2. 登录AWS控制台,创建新的Lambda函数:
    • 选择运行时为Python 3.6
    • 上传刚才生成的lambda_deploy.zip包
    • 设置函数处理程序为lambda_function.lambda_handler

五、关键注意事项

  • 内存与超时设置:Selenium运行需要足够内存,建议设置Lambda内存至少512MB;超时时间根据网页加载速度调整,建议设置30秒以上(比如60秒)。
  • 版本匹配:Chrome和ChromeDriver的版本必须严格对应,否则会出现驱动无法启动的错误。
  • 依赖兼容性:因为Python 3.6已停止维护,部分新库不再支持,所以BeautifulSoup4建议选择4.9.x及以下的版本(确保兼容Python3.6)。

内容的提问来源于stack exchange,提问作者skysoft999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:36:57