x-crawl 快速指南:用自然语言替代写死的 CSS 选择器,5 分钟跑通第一个采集任务

发布时间:2026/10/23 2:11:30

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),仅供参考
延伸阅读

更多相关文章

2026/10/23 4:36:08

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/23 3:16:44

零代码搭建手机扫码出入库系统:多维表格实战指南

最近在帮朋友的小仓库做库存管理,发现一个很有意思的现象:大家用电脑端的多维表格做数据录入时,总感觉被“绑”在电脑前,效率不高。但一换成手机,通过扫码来操作出入库,整个流程瞬间就丝滑了。这让我意识到…

2026/10/23 5:29:00

Linux进程间关系与守护进程:从会话隔离到systemd部署实践

【Linux网络】进程间关系与守护进程提到 Linux 网络运维和后台服务开发,进程间关系与守护进程是一道绕不过去的坎。很多朋友在写网络服务时,明明程序跑得好好的,一关终端服务就断,或者启动了一堆“僵尸”进程挂在后台无人认养&…

2026/10/23 5:29:00

Kali Linux 单引导安装与 LVM 全盘加密实战避坑指南

简介:这份PDF面向准备入门网络安全与渗透测试的学习者,以及需要在虚拟机或裸机上部署Kali Linux的运维与安全从业者,帮助解决从镜像准备到系统安装完成的完整流程问题。资源包共1个PDF文件,大小约2.07MB,内容以图文步骤…

2026/10/23 5:29:00

SpringBoot+Vue+MySQL选课系统:从零到部署的完整实战拆解

选课系统这名字,在高校里几乎是每个学生都绕不开的东西,同时也是无数计算机专业同学的大作业和毕业设计首选。我自己也帮别人调试过不少这类项目,说实话,市面上的选课系统源码鱼龙混杂,能“拿到手就直接跑起来”的还真…

2026/10/23 5:29:00

Windows下Redis后台启动:注册服务与配置文件实战指南

1. 为什么必须解决“后台启动”这件事几个月前我在本地调一个微服务 demo 时,养成一个特别别扭的习惯:先把 Redis 窗口打开,再去启动后端,调试完还要记得把窗口关掉。有一次 Windows 自动更新重启机器,我顺手把所有黑色…

2026/10/23 5:23:59

制造业AI落地实战:三大场景、代码与案例全解析

刚过去的这一年,制造业里的AI声音比往年大了不少。但说实话,很多工厂试了AI之后又悄悄退回老路,原因不外乎三个:场景选得太虚、数据根本喂不动模型、算法做出来但车间不认账。我手里也做过几个制造方向的AI落地项目,从…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/23 0:02:26

Verilog实现FPGA密码锁:矩阵键盘与状态机设计实战

说实话,这几年接触了不少想入门FPGA的朋友,如果你问哪个项目能一口气把Verilog的核心基本功串起来,我通常会推荐电子密码锁。这个项目看着不起眼,却把矩阵键盘扫描、按键消抖、状态机设计、动态显示刷新、外设控制这些数字逻辑里的…

2026/10/23 0:02:26

数据服务监控运维实战:从指标体系到告警治理与故障排查

周末凌晨两点,手机震了。第一反应是“数据服务挂了”。打开电脑看了下,果然,某张核心报表的数据产出时间已经超过SLA两小时,下游三个业务方连着发来问询。这种场景,做过大数据运维的人都不会陌生。数据服务的监控与运维…

2026/10/23 0:02:26

FreeRTOS任务通知实战详解:内核原理、API与避坑指南

裸机编程切到RTOS之后,任务之间的通信和同步永远是躲不开的坎。前面聊过队列、信号量、互斥锁、事件组,这次把FreeRTOS任务通知(Task Notification)单独拎出来讲透。原因很简单:任务通知是FreeRTOS里最容易用错、也最容…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑