如何在GCP部署Python爬虫代码并实现每小时自动运行写入BigQuery
GCP定时运行Python爬虫并写入BigQuery部署方案
前置准备
- 已开通GCP相关服务权限:Cloud Functions、Cloud Scheduler、BigQuery,项目额度正常
- 本地调试完成爬虫代码,输出数据结构和提前创建的BigQuery表结构完全匹配
推荐部署方案
无服务器架构:Cloud Functions + Cloud Scheduler,无需维护服务器,按量付费,适配小时级轻量爬虫场景完全够用。如果爬虫单次运行时长超过9分钟(Cloud Functions最大超时限制),可以替换为Cloud Run部署,触发逻辑一致。
分步操作指南
1. 改造爬虫代码适配Cloud Functions
- 调整代码入口为Cloud Functions兼容的触发格式,参考示例:
import requests from bs4 import BeautifulSoup from google.cloud import bigquery # 入口函数名后续部署时需要对应填写 def crawl_and_load_to_bq(event, context): # 此处粘贴你已经调试完成的爬虫逻辑 crawled_data = [ # 这里是你爬取到的结构化数据,格式需匹配BQ表字段 # {"site": "xxx", "content": "xxx", "crawl_time": "2024-xx-xx"} ] # 写入BigQuery逻辑 bq_client = bigquery.Client() # 替换为你自己的BQ表路径:项目ID.数据集ID.表名 target_table = "your-project-id.your-dataset-id.your-table-name" insert_errors = bq_client.insert_rows_json(target_table, crawled_data) if insert_errors: raise Exception(f"BQ写入失败,错误信息:{insert_errors}") return "任务执行成功"
- 在代码同级目录创建
requirements.txt,填入所有依赖包及对应版本,示例:
requests==2.31.0 beautifulsoup4==4.12.3 google-cloud-bigquery==3.12.0
2. 部署Cloud Functions服务
- 进入GCP控制台Cloud Functions页面,点击「创建函数」
- 基础配置:
- 环境选择第一代即可,新手操作门槛更低
- 触发类型选「HTTP」,测试阶段可先勾选「允许未通过身份验证的调用」,上线后可单独配置Cloud Scheduler调用权限
- 资源配置:内存分配256MB~512MB,超时时间设置为540秒(最大值,避免爬取时间过长被强制中断)
- 代码配置:
- 运行时选择和你本地调试一致的Python3.x版本
- 把改造后的Python代码、
requirements.txt内容粘贴到对应编辑框,入口函数填写crawl_and_load_to_bq - 点击「部署」,等待部署完成后点击「测试」,确认函数运行正常、数据已正确写入BigQuery
3. 配置定时触发规则
- 进入GCP控制台Cloud Scheduler页面,点击「创建作业」
- 配置参数:
- 频率填写
0 * * * *,对应每小时整点执行一次 - 目标类型选「HTTP」,URL填之前部署的Cloud Functions的触发URL
- HTTP方法选「POST」,其余配置保持默认即可,点击创建完成
- 频率填写
内容的提问来源于stack exchange,提问作者AmaniAli
相关产品推荐
相关产品推荐

