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

在Synapse Analytics中用PySpark自动爬取网页并下载报告的方案咨询

在Synapse Analytics中用PySpark实现无本地依赖的网页爬取自动化

关于本地Chrome Driver的问题

如果在本地机器安装Chrome Driver并让Synapse脚本调用它,确实需要本地机器全程开机。因为Selenium需要直接连接本地运行的Chrome Driver进程,一旦本地关机,Driver进程终止,Synapse的爬取脚本就会报错无法执行。而且Synapse作为云端服务,默认无法直接访问本地的Driver资源,这种方案本身就不可行,更别提自动化了。

无需额外基础设施的实现方案

直接在Synapse的Spark池中配置依赖,让爬取逻辑完全在云端执行,不需要本地机器参与。具体步骤如下:

1. 在Synapse Spark池配置依赖

Synapse支持两种方式安装Selenium和Chrome相关组件:

  • 方式一:使用Conda环境
    在Synapse Studio中创建自定义Conda环境,添加以下包:

    • selenium:Selenium核心库
    • chromedriver-binary:对应版本的Chrome Driver
      保存环境后,在提交PySpark作业时指定使用这个自定义环境。
  • 方式二:使用Spark初始化脚本(Init Script)
    编写一个bash脚本,在Spark池启动时自动安装Chrome浏览器和Driver:

    #!/bin/bash
    # 安装Chrome浏览器
    apt-get update
    apt-get install -y chromium-browser
    # 下载对应版本的Chrome Driver
    CHROME_VERSION=$(chromium-browser --version | grep -oP 'Chromium \K[0-9]+')
    wget https://storage.googleapis.com/chrome-for-testing-public/$CHROME_VERSION.0/linux64/chromedriver-linux64.zip
    unzip chromedriver-linux64.zip
    mv chromedriver-linux64/chromedriver /usr/local/bin/
    chmod +x /usr/local/bin/chromedriver
    

    将脚本上传到Synapse关联的ADLS存储,然后在Spark池的配置中指定这个初始化脚本,每次Spark池启动时会自动执行安装。

2. 编写无头模式的PySpark爬取脚本

使用Chrome的无头模式运行Selenium,不需要可视化界面,完全在云端执行。示例代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("WebCrawler").getOrCreate()

# 配置Chrome无头模式选项
chrome_options = Options()
chrome_options.add_argument("--headless=new")  # 新版无头模式
chrome_options.add_argument("--no-sandbox")    # 禁用沙箱(必要的服务器端运行参数)
chrome_options.add_argument("--disable-dev-shm-usage")  # 解决内存不足问题
chrome_options.add_argument("--window-size=1920,1080")  # 设置窗口尺寸,避免页面布局异常

# 初始化Driver
driver = webdriver.Chrome(options=chrome_options)

# 爬取逻辑示例
try:
    driver.get("目标报告页面URL")
    # 模拟点击下载按钮、等待文件下载完成等操作
    # 将下载的报告上传到ADLS(Synapse可直接访问)
finally:
    driver.quit()  # 确保Driver关闭

spark.stop()

3. 配置自动化执行

在Synapse中使用**管道(Pipeline)**触发PySpark作业:

  • 创建一个管道,添加"Spark作业"活动,指向你的爬取脚本
  • 设置触发规则:可以是定时触发(比如每天凌晨)、事件触发(比如特定文件生成后)
  • 管道会自动调用Synapse的Spark池执行作业,全程不需要本地机器参与

注意事项

  • 确保Chrome Driver版本与安装的Chrome浏览器版本完全匹配,避免兼容性错误
  • 爬取网站时需遵守robots协议和网站的使用条款,避免触发反爬机制
  • 下载的报告直接保存到Synapse关联的ADLS存储中,方便后续分析处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:15:51