📦 Scraper Builder
v1.0.0使用 Bright Data 基础设施为任意网站构建可投产 web scraper。指导你完成站点分析、API 选型、选择器提取、……
运行时依赖
安装命令
点击复制技能文档
Scraper Builder 你正在为用户构建一个生产级的网络爬虫。你的任务是把“我想从站点 X 拿数据”变成可运行、健壮的爬虫,能应对分页、动态内容、反爬、数据解析等现实挑战。
关键:永远先验证输出 写完爬虫后,务必先在 1–3 个样本页运行,把提取结果展示给用户,再扩大规模。若输出为空、格式错乱或字段缺失,立即迭代——修正选择器、换 API 或调整解析逻辑。不能产出干净数据的爬虫不算完成。
侦察阶段别赶时间,花 2 分钟提前分析 HTML,可省数小时调试。质量优先于速度。
本技能如何工作 本技能统筹 Bright Data 四大 API,智能构建爬虫。先分析目标站点,再选最可靠、最省钱的提取方式,而非写脆弱定制代码。决策树:
- 已有现成爬虫?→ Web Scraper API(零解析代码)
- 静态页、无需交互?→ Web Unlocker API(最便宜、最简单)
- 需点击、滚动或 JS 交互?→ Browser API(全自动化)
- 要搜索引擎结果?→ SERP API
最终交付完整可运行代码,而非伪代码或提纲。
阶段 1:理解目标 写代码前,先弄清用户需求与站点结构。必问(跳过已答):
- 站点?——目标 URL 或域名
- 数据?——所需字段(商品名、价格、评论等)
- 范围?——单页、分类页、搜索结果、整站板块?
- 分页?——是否跨多页抓取
- 量级?——大概多少条/页?(决定同步/异步及并发策略,见 references/concurrency-guide.md)
- 输出格式?——JSON、CSV、数据库?(默认 JSON)
- 语言偏好?——Python 或 Node.js?(默认 Python)
别过度采访。用户说“给亚马逊商品页建爬虫”,即:站点=Amazon,数据=商品详情,范围=商品页,可直接下一步。
阶段 2:检查现成爬虫 动手前,先查 Bright Data 是否已有该域名现成爬虫。最快、最便宜、最稳。
- 读 references/supported-domains.md 看常用列表。
- 列表不全,实时查 Dataset List API:
- 也可浏览完整文档索引 https://docs.brightdata.com/llms.txt。
若存在现成爬虫 用 Web Scraper API 或 Python SDK,直接返回结构化 JSON,无需解析代码。 Python SDK(推荐): from brightdata import BrightDataClient async with BrightDataClient() as client: result = await client.scrape.amazon.products(url="https://amazon.com/dp/B0CRMZHDG8") if result.success: print(result.data)
REST API(shell/curl): bash scripts/datasets.sh amazon_product "https://www.amazon.com/dp/B09V3KXJPB"
批量抓取用异步触发/轮询/获取模式: async with BrightDataClient() as client: job = await client.scrape.amazon.products_trigger(url=url) await job.wait(timeout=180, poll_interval=10, verbose=True) data = await job.fetch()
若需多页,跳至阶段 5(分页/编排)。
无现成爬虫 → 阶段 3。
阶段 3:站点侦察 可靠与脆弱的分水岭。写提取代码前,先彻底理解站点结构。
步骤 3a:拉取页面 HTML 用 Web Unlocker 拿原始 HTML,判断服务端或客户端渲染,拿到真实 DOM。 import requests, os API_KEY = os.environ["BRIGHTDATA_API_KEY"] ZONE = os.environ["BRIGHTDATA_UNLOCKER_ZONE"] response = requests.post( "https://api.brightdata.com/request", headers={"Authorization": f"Bearer {API_KEY}"}, json={"zone": ZONE, "url": "https://target-sit