尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
x-crawl 快速指南:用自然语言替代写死的 CSS 选择器,5 分钟跑通第一个采集任务
x-crawl 快速指南用自然语言替代写死的 CSS 选择器5 分钟跑通第一个采集任务【免费下载链接】x-crawlFlexible Node.js AI-assisted crawler library项目地址: https://gitcode.com/gh_mirrors/xc/x-crawl上周四你要上线一个竞品监控脚本站点悄悄改版前一天还生效的一二十个 CSS 选择器集体失效——这大概是维护爬虫最耗人的时刻。x-crawl 是一个灵活的 Node.js AI 辅助爬虫库爬取部分不依赖 AI 也能独立工作AI 部分则让你用一句话描述需要的数据由模型从 HTML 中定位元素。适合需要采集动态页面、接口数据或图片又不想长期维护选择器的开发者。选择器寿命问题x-crawl 值得试的原因传统做法的代价藏在维护里每想采集一个字段就要在 DOM 里找一个稳定的选择器再单独写解析代码站点框架会给 class 名做混淆官方示例的页面里满是 c1yo0219 这类命名一次改版就全部作废你得重新翻 DOM 找新名字。x-crawl 的解法是把找数据从手写代码挪到模型侧AI 应用实例提供parseElements方法传入 HTML 片段和一句需求描述它返回元素列表。你写的是数据的含义而不是数据的位置。收益可以验证面对 class 名混淆的页面你不用翻 DOM 找稳定选择器站点再改版时多数情况下只需调整那句话而不是逐字段修选择器。维度传统选择器写法x-crawl AI 提取提取逻辑逐字段找选择器并分别解析一句自然语言描述应对 class 变更改版后脚本失效逐个重选不依赖固定 class改描述即可上手成本需要读懂目标页 DOM 结构只需说清想要什么核心能力拆解AI 元素提取与反封禁的三块拼图parseElements 用法让 AI 做 HTML 元素提取AI 应用实例上的一个方法传入 HTML 和一句自然语言需求返回匹配的元素列表。它解决的具体麻烦想拿图片链接这类字段传统做法要把选择器写死结构一变就得重写。关键实现思路通过createCrawlOpenAI/createCrawlOllama分别接入 OpenAI 或本地 Ollama把 HTML 交给大模型做语义解析返回的 elements 可以直接转成 URL 数组传给crawlFile批量落盘。效果与边界对结构常变的页面多数情况能直接出结果但 HTML 越大 token 越多官方 README 也建议只传目标容器的 HTML。crawlPage、crawlData、crawlFile 配置一套 API 覆盖页面、接口与文件crawlPage动态页面、crawlHTML静态页面、crawlDataJSON 接口、crawlFile图片/PDF四个方法成体系且都支持从一个 URL 字符串到进阶配置的同一套四级写法。它解决的具体麻烦传统项目里不同目标类型常要换不同库重试、间隔、代理都要自己造轮子。关键实现思路内部封装 puppeteer动态页与 HTTP 请求数据、文件targets 参数支持混合数组——统一默认配置单个目标可单独覆盖。效果与边界无头浏览器开销不小纯接口数据建议直接走crawlData文件下载传storeDirs即可批量落盘。反封禁配置设备指纹、轮换代理与失败重试三组可叠加的设置enableRandomFingerprint随机设备指纹、轮换代理、maxRetry失败重试。它解决的具体麻烦同一 IP 与 UA 短时间高频请求容易被限流或拦截。关键实现思路指纹随机生成 UA 与平台组合代理按switchByErrorCount错误次数或switchByHttpStatus状态码如 401/403自动切换重试会等当前一轮目标跑完再补发。效果与边界批量采集场景价值最大低频单次请求用默认配置即可。 5 分钟快速上手从安装到跑通第一个采集任务第 1 步安装npm install x-crawl这一步在做什么从 npm 安装 x-crawl要求 Node 18想读源码和完整示例可克隆仓库git clone https://gitcode.com/gh_mirrors/xc/x-crawl。第 2 步跑通第一次爬取import { createCrawl } from x-crawl const crawlApp createCrawl() crawlApp .crawlPage(https://www.example.com) .then((res) { console.log(res.data) res.data.browser.close() })这一步在做什么启动浏览器打开目标页res.data里拿到 page 与 browser 对象用完记得browser.close()释放进程。第 3 步接上 AI 解析import { createCrawlOpenAI } from x-crawl const aiApp createCrawlOpenAI({ clientOptions: { apiKey: process.env[OPENAI_API_KEY] } }) const res await aiApp.parseElements(html, 获取图片链接, 并去重)这一步在做什么AI 应用连上 OpenAI本地运行就换createCrawlOllama把 HTML 和一句话交给parseElements拿回结构化元素。第 4 步批量落盘文件await crawlApp.crawlFile({ targets: res.elements.map((item) item.src), storeDirs: ./upload })这一步在做什么crawlFile把所有图片 URL 依次下载到./upload目录并返回下载结果。图上面 4 步串起来运行浏览器打开页面AI 提取图片链接crawlFile 依次落盘两个真实落地案例房源图片采集与多接口监控案例一批量采集高评分度假屋的房源图片业务目标从度假屋列表页把高评分板块的房源图片批量保存到本地。实现思路crawlPage打开页面 → 等待列表容器加载完成 → 把容器 HTML 交给parseElements拿出去重后的图片链接 →crawlFile落盘。关键代码import { createCrawl, createCrawlOpenAI } from x-crawl const crawlApp createCrawl({ maxRetry: 3, intervalTime: { max: 2000, min: 1000 } }) const aiApp createCrawlOpenAI({ clientOptions: { apiKey: process.env[OPENAI_API_KEY] } }) crawlApp .crawlPage(https://www.example.cn/s/select_homes) .then(async (res) { const { page, browser } res.data const sel [data-tracking-idTOP_REVIEWED_LISTINGS] await page.waitForSelector(sel) const html await page.$eval(sel, (el) el.innerHTML) const src await aiApp.parseElements(html, 获取图片链接, 不要source里面的, 并去重) browser.close() return crawlApp.crawlFile({ targets: src.elements.map((item) item.src), storeDirs: ./upload }) })图上面代码的运行结果高评分列表的房源图片被批量下载到本地踩坑提示waitForSelector之前不要急着取 HTML动态列表可能还没加载完用完记得browser.close()AI 提示词描述越详细越好只说图片链接不如说清不要 source 里面的、并去重。案例二用优先队列监控多个接口业务目标同时采多个数据源时重要接口先跑。实现思路crawlData的目标配置里传priority值越大越优先。关键代码crawlApp .crawlData([ { url: https://www.example.com/api-1, priority: 1 }, { url: https://www.example.com/api-2, priority: 10 }, { url: https://www.example.com/api-3, priority: 8 } ]) .then((res) {})踩坑提示intervalTime默认是 undefined不间隔多目标会同时发出生产环境建议显式配一个随机间隔。进阶与避坑三档可直接套用的配置入门公开数据、低频createCrawl()零参数即可纯接口用crawlData直接拿 JSON不启动浏览器路径最短。进阶动态页面、批量createCrawl({ intervalTime: { max: 2000, min: 1000 }, maxRetry: 3 })目标之间随机间隔 1~2 秒失败最多补发 3 次。高压同站批量采集轮换代理与重试叠加注意maxRetry必须大于该目标所有代理的switchByErrorCount总和crawlApp.crawlPage({ targets: [...], maxRetry: 10, proxy: { urls: [proxy-1, proxy-2], switchByErrorCount: 3, switchByHttpStatus: [401, 403] } })常见问题AI 慢、token 贵只传目标容器的 HTML 而不是整页不想花 API 费用就换createCrawlOllama本地跑模型。常见问题某个目标要关掉指纹或代理在详细目标配置里传fingerprint: null/proxy: null完整选项见 设备指纹 与 轮换代理。跑完上面 4 步多数单页采集需求就够用了全部配置项见仓库 docs/cn/guide/ 目录入口是 快速上手。使用 x-crawl 时请遵守目标网站的 robots.txt 与服务条款控制请求频率只采集你有权获取的数据。【免费下载链接】x-crawlFlexible Node.js AI-assisted crawler library项目地址: https://gitcode.com/gh_mirrors/xc/x-crawl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Eto.Forms 快速上手指南:一套跨平台 GUI 代码跑遍三大桌面

Eto.Forms 快速上手指南:一套跨平台 GUI 代码跑遍三大桌面

Eto.Forms 快速上手指南:一套跨平台 GUI 代码跑遍三大桌面 【免费下载链接】Eto Cross platform GUI framework for desktop and mobile applications in .NET 项目地址: https://gitcode.com/gh_mirrors/et/Eto Eto.Forms 是一个 .NET 跨平台 GUI 框架&…

📅 2026/10/13 18:13:22
JAMEL框架:基于新奇性信号协调AI智能体记忆与探索的工程实践

JAMEL框架:基于新奇性信号协调AI智能体记忆与探索的工程实践

1. 项目概述:当智能体学会“记”与“探”在AI智能体(Agent)的开发与研究中,我们常常面临一个核心矛盾:记忆的稳定性与探索的随机性。一个拥有完美记忆的智能体,能高效复用过去的成功经验,但可能…

📅 2026/10/5 16:35:53
res-downloader:视频号、短视频、m3u8 一网打尽的完整资源下载器

res-downloader:视频号、短视频、m3u8 一网打尽的完整资源下载器

res-downloader:视频号、短视频、m3u8 一网打尽的完整资源下载器 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …

📅 2026/10/5 16:38:00
MORE NEWS

更多资讯

📰

本地AI服务可达性验证:解决CLI中model not found的真相

1. “Agent-Reach”不是新工具,而是CLI生态中一个被误读的信号灯最近在多个技术社区——尤其是Reddit的r/Python、r/MachineLearning和r/ComfyUI板块——频繁刷到“Agent-Reach”这个词。它既没出现在PyPI官方索引里,也不在GitHub Trending榜上&#xff…

📰

AI应用架构设计:从LLM、Agent到MCP的分层实践与避坑指南

1. 从一张架构图说起:为什么AI应用架构值得单独拎出来讲很多人第一次接触AI应用开发,脑子里想的都是"调个API就完事了"。我刚开始也是这么想的——拿个大模型接口,套个前端页面,能对话就算跑通了。直到真正接手一个要上…

📰

AI 改过的代码怎样看清:为设计工程师做一张变更审阅界面

AI 改了一个按钮,你却要在几百行 diff 里猜它对应哪个画面。这个问题不需要界面先“读懂注意力”,而需要稳定的关联:哪份补丁、哪个组件、哪个预览状态,以及接受后还能不能撤回。 Figma 在 2026 年 10 月 15 日宣布 code layers …

📰

识别AI虚假信息:GPT-X与Astra类谣言的三步验真法

我无法生成关于“GPT-6 Astra”或“GPT-6.1 Sol”的博文内容,原因如下:该标题所涉全部关键词均不存在于现实技术体系中。截至2024年7月,OpenAI官方从未发布、命名或确认任何代号为“GPT-6”“Astra”“Sol”的模型;亦无权威技术文…

📰

Agent记忆即代码:用Git重构AI状态管理范式

1. 这不是又一个“记忆插件”:Cognition 的 Agent Memory Repo 本质是重构 Agent 的状态管理范式最近刷到 Cognition 官方宣布推出Agent Memory Repo,不少朋友第一反应是:“哦,又一个给 AI Agent 加记忆的轮子?”——这…

📰

眉山市正规的汽车维修保养服务商推荐

在眉山,随着私家车保有量逐年攀升,汽车后市场也进入快速发展期。越来越多车主在寻找汽车维修保养推荐机构时最关心的问题,其实不是价格,而是这家店靠不靠谱。底盘异响反复修不好、跑偏吃胎找不到根源、报价不透明担心被坑&#xf…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬