news 2026/9/4 0:18:42

Crawl4AI:3 步配好登录态、动态页面与结构化数据提取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Crawl4AI:3 步配好登录态、动态页面与结构化数据提取

Crawl4AI:3 步配好登录态、动态页面与结构化数据提取

【免费下载链接】crawl4ai🚀🤖 Crawl4AI: Open-source LLM Friendly Web Crawler & Scraper. Don't be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai

运营每天要盯竞店价格,而数据卡在四道关上:竞品站要登录才能看全价,列表靠滚动和"加载更多"动态渲染,HTML 里的字段位置各站不同,页面结构还隔三差五改版。Crawl4AI 是一个开源的网页数据采集框架,它用无头浏览器(不弹窗口的爬虫专用浏览器)跑真实渲染,再配合 CSS 选择器或 LLM 指令做结构化数据提取,把这四道关一次配完,之后一条命令就能复用。

把登录存成 Profile,下次直接带上

你会遇到什么问题:多个后台各要各的登录流程,手工存 cookie 很快过期,爬一半掉线得重来。

Profile 怎么做的:它把整个浏览器数据目录(cookie、LocalStorage、IndexedDB)持久化成一份独立"身份",下次启动时直接加载,会话还在有效期内就不用再登。

crwl profiles # 建一个 Profile,在打开的浏览器里登录 crwl https://shop.example.com/admin -p shop-admin

第二段在做什么:-p shop-admin复用刚登录好的身份。改两处即可——Profile 名和你要爬的后台地址。不想用交互向导时,也可以在 Python 配置里直接指向数据目录:BrowserConfig(user_data_dir="/path/to/profile")use_managed_browser=True

边界要说清楚:验证码、双因素、OAuth 跳转这类流程没法自动过,第一次得你人工在弹出的浏览器里点完,之后的爬取都是复用;Profile 只在会话有效期内免登录,过期了重新登一次即可。

常见误区:以为 Profile 只是把 cookie 抄走。它存的是完整会话环境(LocalStorage、站点缓存都在),这比裸 cookie 更接近真实浏览器,不容易一上来就被判异常。

动态页面怎么拿全:用 wait_for 代替 sleep

你会遇到什么问题:page.goto返回的 HTML 经常只是骨架,价格、列表要靠滚动和点击才出来,抓回来就是残缺的。

Crawl4AI 的无头浏览器爬取按固定顺序执行:js_code_before_wait(先触发加载)→wait_for(等某个元素出现)→delay_before_return_html(安全余量)→js_code(收尾脚本)。

config = CrawlerRunConfig( wait_for=".price-cell", # 等到价格格子出现才收 HTML scan_full_page=True, # 滚动整页,触发懒加载 scroll_delay=0.5, virtual_scroll_config={ # 无限滚动列表专用 "container_selector": ".feed", "scroll_count": 10, }, ) # async with AsyncWebCrawler() as crawler: await crawler.arun(url, config)

这段在做什么:wait_for把等待交给条件而不是时间;滚动列表才加virtual_scroll_config(虚拟滚动指只渲染视口内条目的列表,滚走就回收 DOM)。需要点"加载更多"时,往js_code里放一句document.querySelector('.load-more').click()就行。

为什么不写死 sleep:固定等待轻则每页白等几秒,重则页面慢一点就抓不全;wait_for让页面快慢自己决定节奏。只有页面明显不稳时,才用delay_before_return_html补零点几秒余量。

提取出能用的数据:CSS 选 CSS,LLM 兜底

你会遇到什么问题:把 HTML 拿到手之后,字段还埋在几十个 div 里,人工解析每站都要重写一遍规则。

CSS 选择器提取(JsonCssExtractionStrategy)用一个 schema 文件定义字段,typejson-css

crwl https://shop.example.com/products -e extract_css.yml -s products_schema.json -o json

schema 里每条字段写baseSelector和字段级selector,例如baseSelector.product-item,字段titleh2pricespan.price。这段在做什么:按选择器把字段抠成 JSON,-o json直接落地。改选择器就能跟着页面改版走。

LLM 指令提取(LLMExtractionStrategy)则是用自然语言描述你要什么,-e里写type: llm加 instruction,适合结构多变、语义复杂的页面,比如"提取每条评论的作者、时间和情感倾向"。

CSS 选择器LLM 指令
速度快,本地完成慢,走模型
稳定性结构一变就失效抗小改版,但可能出错
适用结构稳定的列表结构多变、字段靠语义判断

常见误区:觉得 LLM 提取总是更省事。结构稳定的页面用 CSS 又快又准,LLM 提取该花在"选择器写不动"的页面上,还省 token。

串起来:一条命令跑完三件事

crwl https://shop.example.com/products \ -p shop-admin \ -c "wait_for=.price-cell,scan_full_page=true,scroll_delay=0.5" \ -e extract_css.yml -s products_schema.json -o json

这段在做什么:-p带上登录态,-c里逗号分隔的是运行时参数(智能等待加整页滚动),-e/-s负责提取,-o json输出结构化结果。要改成 LLM 提取,把-e/-s换成 LLM 策略的配置文件加 JSON schema 就行;页面是无限滚动列表时,滚动参数要改到virtual_scroll_config,那一步得走 Python 配置。

去哪深入

  • 快速入门:docs/examples/quickstart.py,可运行的最小示例,先拿一个静态页跑通
  • API 参考:docs/md_v2/api/,参数逐个有说明,配wait_forscan_full_page时查这里
  • 页面交互与动态页面抓取:docs/md_v2/core/page-interaction.md,讲js_code执行顺序
  • 虚拟滚动专项:docs/md_v2/advanced/virtual-scroll.md,推特、Instagram 式列表的处理

仓库克隆地址:git clone https://gitcode.com/GitHub_Trending/craw/crawl4ai

如果你要维护几条固定的数据采集线——盯竞店、收行情、抓后台报表——这套流水线够你从登录到落地 JSON 全配完。下一步:从 quickstart 跑通一个静态页,再把你的真实站点套进 Profile 和wait_for里试一轮。

【免费下载链接】crawl4ai🚀🤖 Crawl4AI: Open-source LLM Friendly Web Crawler & Scraper. Don't be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 19:07:26

训练并发时的资源边界

训练并发时的资源边界本文围绕“并发上来后先守住哪条线”整理可复现的检查思路。所有阈值、配置和结果均应在隔离环境中记录输入、版本与资源条件后再解释;下文示例不对应真实组织、用户、流量或成本数据。 1. 用受控样例界定问题 2. DDP 与 FSDP 的通信背压&#…

作者头像 李华
网站建设 2026/9/2 11:01:10

JavaScript原型链完全指南:从prototype到继承底层原理

1. 先别背答案:原型链存在的理由,比链表本身更重要前端面试卷到一定阶段,"原型链"差不多是必考点。我面试过不少候选人,喊一句"你了解原型链吗",对方立刻开始背:prototype是函数的属性…

作者头像 李华
网站建设 2026/9/3 22:56:41

Hermes Agent 命令行实战:7个斜杠命令串起三条日常工作流

Hermes Agent 命令行实战:7个斜杠命令串起三条日常工作流 【免费下载链接】hermes-agent The agent that grows with you 项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent 聊到一半发现方向跑偏,你敢不敢推倒重来?大多…

作者头像 李华
网站建设 2026/9/3 20:11:55

LSM6DSL低功耗IMU开发实战:从寄存器配置到FIFO与姿态融合

做嵌入式这些年,和惯性传感器打的交道不算少。从早年的 MPU6050 开始,到后来的 ICM20602、BMI160,再到今天要聊的 LSM6DSL,每一颗芯片都有自己的脾气。其中 LSM6DSL 是我在低功耗项目里用得最多、也最愿意推荐的一颗 6 轴惯性测量…

作者头像 李华
网站建设 2026/9/3 18:56:13

三步搭好Material-UI折叠面板:从零到FAQ页与设置面板

三步搭好Material-UI折叠面板:从零到FAQ页与设置面板 【免费下载链接】material-ui Material UI: Comprehensive React component library that implements Googles Material Design. Free forever. 项目地址: https://gitcode.com/GitHub_Trending/ma/material-u…

作者头像 李华
网站建设 2026/8/31 22:33:48

蓝桥杯Fibonacci数列题解:从递归超时到迭代取模的算法优化

1. 从“蓝桥入门训练”说起:为什么是Fibonacci数列? 如果你刚开始接触编程竞赛,或者正在准备“蓝桥杯”这类赛事,那么“入门训练”这个系列题目,尤其是那道关于Fibonacci数列的题,大概率是你绕不开的第一道…

作者头像 李华