尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Crawl4AI:异步网页爬虫,3 个场景拿干净 Markdown

Crawl4AI:异步网页爬虫,3 个场景拿干净 Markdown Crawl4AI异步网页爬虫3 个场景拿干净 Markdown【免费下载链接】crawl4ai Crawl4AI: Open-source LLM Friendly Web Crawler Scraper. Dont be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai给大模型喂网页数据最怕正文里混进弹窗、导航和侧边栏。Crawl4AI 是一个面向 LLM 应用的异步网页爬虫它把页面渲染后直接输出干净 Markdown并用智能内容提取剔除无关区块。下面用 3 个场景走一遍。一、30 秒搞懂 Crawl4AI它和传统爬虫差在哪先给结论Crawl4AI 把浏览器渲染 内容提取 Markdown 输出做成了一个 Python 库。你调用crawler.arun(url)一步拿结果不需要自己拼 Playwright 和正则清洗。维度传统爬虫requests/BeautifulSoupCrawl4AI输出原始 HTML需自己清洗直接给 Markdown 文本含原始版与精简版动态页面不执行 JS拿不到异步加载的内容内置 Chromium 渲染可等元素、可执行脚本并发顺序执行或手写异步逻辑原生 async一个任务并行抓多个 URL二、装好它并跑通第一个例子安装就 3 个命令pip install -U crawl4ai crawl4ai-setup crawl4ai-doctorcrawl4ai-setup会装好浏览器依赖crawl4ai-doctor用来体检后面坑一节会用到它。然后是最小可运行示例9 行import asyncio from crawl4ai import AsyncWebCrawler async def main(): async with AsyncWebCrawler() as crawler: result await crawler.arun(urlhttps://www.nbcnews.com/business) if result.success: print(result.markdown.raw_markdown[:300]) asyncio.run(main())运行结果页面先被 Chromium 渲染再转成 Markdown。result是一个 CrawlResult除 Markdown 外还有html、media、links、metadata等字段markdown.fit_markdown是智能内容提取后的精简版正文更干净适合直接喂给 LLM。三、三个真实场景静态、动态、批量并发1. 静态页面CSS 选择器只抓正文场景新闻站正文混着侧边栏和推荐流你只想要主内容。result await crawler.arun( urlhttps://www.nbcnews.com/business, css_selectorarticle, )css_selector限定提取范围Markdown 只包含匹配元素侧边栏和推荐区直接消失。结果长什么样正文、标题、段落完整保留但总长度比不传选择器时明显更短。2. 动态加载内容等 JS 跑完再抓场景内容靠 JS 异步填充页面刚加载时是个空壳。result await crawler.arun( urlhttps://www.nbcnews.com/business, wait_for.story-headline, )wait_for会让爬虫等到选择器出现才抓内容避免拿到未渲染完的骨架页。如果你需要点击加载更多之类的交互可以传js_code参数执行自己的脚本思路一样先让页面变到目标状态再收割。3. 批量并发arun_many 一次抓 N 个场景一次要抓 3 个以上页面。urls [ https://example.com/a, https://example.com/b, https://example.com/c, ] results await crawler.arun_many(urlsurls) print(len(results)) # 3AsyncWebCrawler 内部维持页面池arun_many把请求并行发出异步并发就像同时开出多条车道。3 个页面的总耗时接近最慢那个而不是三者相加需要更多并发时可以通过 dispatcher 参数调节上限。四、新手常踩的 4 个坑Q1装完 pip 包一跑就报浏览器相关错误Crawl4AI 依赖 Chromiumpip install不会替你装浏览器。跑一遍crawl4ai-setup安装依赖再跑crawl4ai-doctor体检仍失败就手动执行python -m playwright install --with-deps chromium。Q2目标站反爬抓回来全是验证页常规对策是换user_agent、配置headers需要登录态时用session_id做会话保持同一 session 内多次 arun 共享 cookie登录一次后续请求直接进内页。更复杂的反爬环境可以查阅仓库里docs/examples/下的 stealth 与 undetected 相关示例。Q3同一条 URL 抓两次第二次结果是不是旧的是。默认开启缓存重复 URL 命中 SQLite 缓存直接返回旧结果。调试阶段建议bypass_cacheTrue强制重抓正式跑批时保留缓存能省大量时间和流量。Q4某个页面失败会把整个程序带崩吗不会。arun 失败不抛异常而是返回successFalse的 CrawlResult错误信息在result.error_message。你要自己检查success并决定重试另外用async with包裹爬虫、退出时释放浏览器别裸调。五、什么时候该用它什么时候别用结论要给 LLM 备网页语料、页面是 JS 渲染的、或者要批量抓几十上百个 URL它就是合适的异步网页爬虫。两个反例目标站有公开 API 时直接调 API 比渲染浏览器快且稳要爬全站镜像级别的海量站点需要上分布式架构它定位在单节点应用层。跑完第一个例子后去把批量并发那段改成你自己的 3 个 URL 跑通。【免费下载链接】crawl4ai Crawl4AI: Open-source LLM Friendly Web Crawler Scraper. Dont be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表