3 步跑通 AI 爬虫:Scrapegraph-ai 自然语言爬网页完整入门
【免费下载链接】Scrapegraph-aiPython scraper based on AI项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapegraph-ai
你写过一批 CSS 选择器,第二天页面改版就全失效吗?Scrapegraph-ai 是一个基于 LLM 的 Python 爬虫库:你用一句自然语言描述要什么数据,它自己完成网页抓取、解析与摘要生成,不用手写选择器。读完本文你能搭好你的第一个 AI 抓取管道,并会切换本地与云端模型。
为什么选它:替代选择器、浏览器脚本和手动粘贴
如果你还在对着页面结构逐个写选择器,传统做法是手搓 BeautifulSoup 脚本:页面不变时很快,结构一变就得整段重写。Scrapegraph-ai 的输入是一句自然语言,页面结构交给模型处理,页面改版后脚本不用动。
如果你还在用 Selenium 处理浏览器驱动、页面加载时机和反爬重试,这些细节都要自己盯。Scrapegraph-ai 把 Playwright 抓取封装在管道内部,配置里一个headless参数控制是否弹出浏览器窗口,一行自动化代码都不用写。
如果你只是把抓到的网页粘进聊天框问 LLM,抓取和解析两步仍然是手动的,输出也是一段没法直接进代码的文本。Scrapegraph-ai 把这几步固化成图:一次run()返回结构化字典,可以直接json.dumps或喂给下游流程。
跑起来:安装、拉模型、写脚本 3 步
第 1 步 安装包和浏览器
pip install scrapegraphai playwright install预期看到:Python 里import scrapegraphai不报错;playwright install下载完浏览器二进制(首次几分钟)。官方建议装在虚拟环境里,避免和其他项目依赖冲突。
第 2 步 拉取本地模型
本文主路径走 Ollama 本地模型,零 API Key、零调用成本。装好 Ollama 后执行:
ollama pull llama3.2预期看到:ollama list里出现 llama3.2。更习惯云端模型的话,把llm配置换成 OpenAI,api_key填环境变量OPENAI_API_KEY即可,支持的模型清单见 docs/source/scrapers/llm.rst。
第 3 步 写最小抓取脚本
from scrapegraphai.graphs import SmartScraperGraph graph_config = { "llm": {"model": "ollama/llama3.2", "model_tokens": 4096}, "verbose": True, } scraper = SmartScraperGraph( prompt="Extract the company business, founders, and social media links", source="https://scrapegraphai.com/", config=graph_config, ) print(scraper.run())预期看到:打印出一个含 description、founders、social_media_links 三个键的字典,内容正是 prompt 要的结构化数据。可运行的对照示例见 examples/smart_scraper_graph/ollama/smart_scraper_ollama.py。
看懂它:一张图看懂 URL 怎么变成 JSON
整条管道四步:
- 抓取环节按 URL 拉取完整 HTML,内部走 Playwright,带 JS 渲染的页面也能拿到最终内容,输出交给下一步。
- 解析环节清洗 HTML 噪声,并按
model_tokens把内容切块,只保留与问题相关的块。 - 生成环节让模型基于这些块回答 prompt,产出结构化字典。
- 配置
"reattempt": True时末尾多一道复判环节:检测到答案为空或 "NA" 会自动重答一次。
不必关心内部节点分工,记住数据流:URL 进、字典出,中间每一步都能用配置开关。
少踩坑:4 个高频问题
运行时报 Playwright 浏览器错误(Executable doesn't exist)。原因是 pip 包装的是驱动,不含浏览器二进制。处理:补跑一次playwright install,抓取网页场景必做。
连不上 Ollama(localhost:11434 connection refused)。原因是 Ollama 服务没启动或模型没拉下来。处理:启动 Ollama 服务后重新ollama pull llama3.2;如果 Ollama 跑在 Docker 容器里,在配置里加base_url指向容器地址,参数说明见 docs/source/scrapers/llm.rst。
结果是空的或 "NA"。原因是模型上下文太小,页面内容没被完整覆盖。处理:先把model_tokens调大(示例脚本用的 4096 就是为此);仍不行就加"reattempt": True,管道会在复判失败后自动重试一轮。
看不到浏览器,没法调页面加载问题。原因是抓取环节默认 headless 运行。处理:配置里设"headless": False,浏览器窗口会弹出来,可以逐步观察页面加载过程。
下一步:单页到批量、多页与自定义
- 批量多 URL 怎么跑:SmartScraperMultiGraph 对一组 URL 用同一 prompt 并行提取,完整示例见 examples/smart_scraper_graph/ollama/smart_scraper_multi_ollama.py。
- 搜索式多页抓取:SearchGraph 从搜索引擎前 N 条结果里提取信息,适合新闻聚合,示例在 examples/search_graph/ollama/search_graph_ollama.py。
- 调优与二次开发:全部管道参数速查在 docs/source/scrapers/graph_config.rst;节点清单(自己组装管道的积木)在 docs/source/modules/scrapegraphai.nodes.rst;想跑测试或提 PR,先看 CONTRIBUTING.md。
自然语言就是你的抓取接口,选择器从此不用维护。现在就去跑一次run()。
【免费下载链接】Scrapegraph-aiPython scraper based on AI项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapegraph-ai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考