网页抓取器构建器
v1.0.0使用Bright Data基础设施为任何网站构建生产就绪的网页爬虫。指导您完成站点分析、API选择、选择器提取等步骤...
运行时依赖
安装命令
点击复制本土化适配说明
网页抓取器构建器 安装说明: 安装命令:["openclaw skills install brightdata-scraper-builder"]
技能文档
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产品页面构建爬虫”,您已经知道:站点=Amazon,数据=产品详细信息,范围=产品页面。跳到下一步。 阶段2:检查预建爬虫 在进行任何自定义工作之前,检查Bright Data是否已经为该域名有爬虫。这是最快、最便宜、最可靠的路径。阅读references/supported-domains.md以获取常见预建爬虫的策划列表。但是,策划列表可能不完整 - Bright Data支持100+域名,并定期添加新爬虫。如果您在策划列表中没有看到目标域名,请查询live Dataset List API以检查: curl -H "Authorization: Bearer $BRIGHTDATA_API_KEY" \ https://api.brightdata.com/datasets/list 这将返回每个可用的爬虫及其dataset_id和name。搜索结果以找到目标域名。您还可以浏览完整的文档索引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 import 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-site"