SuperAPI AI 工具集

website-scraping

前端与建站

查看项目

更新于 10-16 06:49

技能介绍

用途:把给定 URL 或 URL 列表转成结构化记录,适用竞品价格监控(酒店、机票、零售、租赁、SaaS)、电商商品目录、房产与招聘列表、评论评分、一次性表格导出等。不涵盖数据库持久化、调度、仪表盘与固定模式归一化;该技能只产出 JSONL。

主要能力与工作流:先明确目标,包括每条记录是什么、字段、输入输出形态、规模与频率、基准样本。随后侦察站点,按从轻到重选择:数据在 View Source 中→静态 HTML 配合 urllib/requests 与解析器;页面含 JSON-LD→直接解析;含 NEXT_DATA、NUXT 等框架内嵌 JSON→提取 JSON 块;存在明确 XHR/Fetch JSON 接口→逆向 API;以上均不可行才用 Playwright 做浏览器自动化。硬性规则:仅当前述路径确实不可行时才用 Playwright。

抽取实现:先对单个已知目标验证字段,再泛化到列表;逐项 try/except,按稳定 id 去重,None 表示有意跳过而异常表示失败,二者区分记录。并发默认串行,20 条以内保持串行加小睡眠,20–200 条用有界并发(如 asyncio.Semaphore,N 取 4–8),数百条以上进入反爬领域。

反爬处理按观察到的现象对应处理:默认 UA 被拒则设浏览器 UA;内容由客户端渲染则用浏览器;返回看似正常但字段缺失属 stub 渲染,需等待选择器并带校验重取;遇 Cloudflare 挑战加 playwright-stealth 并每页新建上下文;限速则加 time.sleep(1-3),必要时考虑代理;验证码等激进 WAF 可考虑 stealth、住宅代理、undetected-playwright 或托管解锁服务;需登录的内容不在本技能范围,应作为阻塞项反馈。托管解锁服务如 Bright Data Web Unlocker、Zyte API、ScraperAPI 等可只替换 fetch 层,其余抽取、去重、JSONL 输出与清单不变,并在清单中记录来源。

健壮性与验证:抓取时保存原始载荷(raw/<id>.html 或 .json)便于重放与取证;抓取时设置阻断页闸门,200 不代表真实内容,需断言非空且不含挑战页特征,否则计为错误;若内容将进入 LLM,必须清理隐藏元素以防提示注入;涉及价格需在抓取时断言货币与地区,不匹配则跳过并标记而非记录换算值。完成后用基准样本冒烟测试、随机抽 5–10 条核对、对照站点总数检查数量、短时间内重复抓取验证确定性。

输出约定:output/records.jsonl 每行一个 JSON 对象,键由调用方定义,另附 manifest.json 记录运行元数据。该设计便于模式演进。

限制与缺失:资料未提供具体价格、性能数据、具体命令与完整安装步骤,也未说明所支持语言或平台细节。