网络刮取器
这个包提供了代理页刮取,结构化取出并被命名为YAML食谱工具. 用这个 fetch选项 playwright-core 浏览器倒置, 一个 regex 选择引擎和 yaml 食谱加载.
安装
npm install @framers/agentos-ext-web-scraper
同伴依赖 : @framers/agentos 有范围 >=0.10.40。 。 。 .
使用量
import { AgentOS } from '@framers/agentos';
const agentos = await AgentOS.create({
extensionManifest: {
packs: [
{
package: '@framers/agentos-ext-web-scraper',
options: {
proxyUrl: process.env.WEB_SCRAPER_PROXY_URL,
proxyList: process.env.WEB_SCRAPER_PROXY_LIST,
},
},
],
},
});
配置
| 选项 | 秘密编号 | 环境变量 | 需求 | 默认 |
|---|---|---|---|---|
proxyUrl | scraper.proxyUrl | WEB_SCRAPER_PROXY_URL | 没有 | 未设置 |
proxyList | scraper.proxyList | WEB_SCRAPER_PROXY_LIST | 没有 | 未设置 |
minDelayMs | 无 | 无 | 没有 | 500 分钟 |
maxDelayMs | 无 | 无 | 没有 | 2000 分钟 |
priority | 无 | 无 | 没有 | 50; falsy 值也使用此默认值 |
A. 背景情况 logger | 无 | 无 | 没有 | 未设置 |
代理设置从真伪选项解析, 然后 context.getSecret然后是环境. proxyList 接受逗号分隔字符串或字符串数组,并优先于 proxyUrl。服务通过列表旋转;按请求旋转 options.proxy 超过它. logger.info 接收激活和停用消息.
工具
| 工具 | 它会做什么 |
|---|---|
web_scrape | 打印一个页面并返回基于选择器的数据或原始的 HTML 和通过渐进倒置清除文本. |
web_scrape_recipe | 使用参数和前结果插值运行一个命名的刮取步骤序列. |
web_scrape
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
url | 字符串 | 对 | 完全合格的 URL 要刮去( 必须从 http:// 或 https:// 开始) . |
extract | 对象 | 没有 | 可选提取配置. 使用 fields 用于单一记录提取,或 list + 键 listFields 用于重复项提取. |
extract.fields | 有字符串值的对象 | 没有 | 输出字段名映射到类似 CSS 的选择器 。 附录 @attr 以提取属性值而不是文本内容. |
extract.list | 字符串 | 没有 | 列表视图中重复容器元素的选择器. |
extract.listFields | 有字符串值的对象 | 没有 | 相对于每个项目的字段选择器 list 集装箱匹配. |
options | 对象 | 没有 | 可选的按要求刮切设置 . |
options.tier | 最小整数 1最大值 4 | 没有 | 开始刮出分级( E)1: 获取, 2剧作家, 3隐形, 4: LLM倒计时. |
options.maxTier | 最小整数 1最大值 4 | 没有 | 服务升级至( 默认) 最高一级 4) (中文(简体) ). |
options.proxy | 字符串 | 没有 | 此请求的 HTTP/ SOCKS5 代理 URL . |
options.headers | 有字符串值的对象 | 没有 | 包含额外的 HTTP 信头 . |
options.waitFor | 字符串 | 没有 | CSS选择器在取出前等待(二级及以上仅限). |
options.timeout | 最小整数 1000 | 没有 | 按毫秒计的请求超时( 默认) 30000) (中文(简体) ). |
options.javascript | 布尔 | 没有 | 如果页面需要 JS 渲染, 设置为真( 滑至二级) . |
web_scrape_recipe
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
recipe | 字符串 | 对 | 执行的食谱名称(例如, generic-article, (中文(简体) ), letterboxd-movie) (中文(简体) ). |
params | 有字符串值的对象 | 对 | 食谱的运行时参数值 。 密钥必须匹配在食谱定义中声明的参数名. |
页:1
两个工具都声明 capability:web_scrape。服务尝试 plain 获取, 无头的 Playwright, 隐形 Playwright, 然后是文本缩放 . javascript: true 除非 maxTier 盖取下. 缓存成功级可提升起步级. 获取请求和浏览器导航或选择器等待默认 30000 每次操作的毫秒,而不是总的最后期限.
浏览器后退动态导入 playwright-core 发射铬 如果导入或发射失败,服务会继续到下一个允许的级别. playwright-core 未在软件包的依赖性中列出。 代理被传递到 Playwright 启动选项; 获取路径不应用 。 每个浏览器在之后尝试关闭其浏览器.
文本倒置拒绝内容短于 200 字符和已识别的 Cloudflare 挑战页。 与 extract,它返回文本和 _llmExtractionRequired: true; 调用运行时间进行 LLM 提取 。 浏览器路径也拒绝公认的挑战页面. Plain fatch 接受成功的 HTTP 响应而不进行此挑战检查 。 所有允许的级别返回失败 success: false 和一个错误消息.
提取支持 tag, (中文(简体) ), .class, (中文(简体) ), #id, (中文(简体) ), tag.class (单位:千美元) @attr 后缀。 它使用 regex 匹配而不是一个完整的 CSS 解析器. 未支持或未匹配的字段选择器返回空字符串 。 空取结果不会引发回升.
速率限制使用随机延迟 minDelayMs 财务报告和审定财务报表 maxDelayMs 重复请求一个域。 每个域成功分级缓存 30 分钟,最多 500 条目.
从软件包中装入 YAML 配方 recipes/ 目录,然后 ~/.wunderland/scraper-recipes/; 用户配方覆盖匹配名称。 捆绑的食谱名称是 generic-article 财务报告和审定财务报表 letterboxd-movie。引擎查找已装入的名称,而不装入所提供路径 recipe。缺少的食谱返回一个错误。 无效的食谱文件生成控制台警告并跳过 .
管道步骤依次运行并插入 {{paramName}}, (中文(简体) ), {{steps.stepName.data.field}} 财务报告和审定财务报表 {{steps.stepName.items[N].field}} 在 URL 和选择器中。 参数前缀 = 在配方中存在默认值; 缺失的值会变成空字符串。 内插不 URL 编码值 。 步骤失败 停止执行并返回部分数据 。 一个步骤 options.maxItems 上限列表结果 。 被捆绑的Letterboxd配方使用由regex提取引擎不执行的后裔选择器.
许可证
阿帕奇 - 2.0