ScrapeGraphAI 图类型(Graph Types)完整指南:从 SmartScraperGraph 到 OmniScraperGraph 的架构解析与实战配置
发布时间:2026/9/30 6:37:41来源:尧图网络
网页爬虫人工智能AI 应用【免费下载链接】Scrapegraph-aiPython scraper based on AI项目地址https://gitcode.com/GitHub_Trending/sc/Scrapegraph-ai点击查看免费下载本篇技术指南围绕 ScrapeGraphAI 仓库中的图类型说明文档展开系统梳理该库提供的全部图Graph类型——包括单页爬取的 SmartScraperGraph、多页搜索的 SearchGraph、语音输出的 SpeechGraph、脚本生成的 ScriptCreatorGraph以及基于 GPT-4o 的 OmniScraperGraph / OmniSearchGraph——并结合 graphs/ 目录下的源码实现深入讲解每种图的节点流水线、配置参数与schema用法。读完本文你将能够根据单页提取、全网搜索、图文理解、语音播报、脚本生成等不同任务场景正确选择并配置对应的图类型跑通可复用的抓取流水线。一、什么是 Graph按任务封装的节点流水线根据 docs/source/scrapers/graphs.rst 的定义Graph 是为解决特定任务而设计的抓取流水线scraping pipelines由一系列可独立配置的节点Node组成每个节点负责任务的一个环节——抓取数据FetchNode、解析内容ParseNode、生成答案GenerateAnswerNode等。不同的图本质上是不同节点及其连接关系边的组合。从源码结构看所有图都继承自 scrapegraphai/graphs/abstract_graph.py 中的AbstractGraph抽象基类它负责通过_create_llm()从config[llm]创建大语言模型实例abstract_graph.py#L118通过set_common_params()将headless、verbose、loader_kwargs、cache_path、timeout默认 480 秒等公共参数统一下发给图中所有节点abstract_graph.py#L88-L97通过run()执行self.graph.execute(inputs)最终从final_state中取出answer。子类只需实现_create_graph()方法声明节点的输入输出与连接关系即可定义一条完整的抓取流水线。types.rst 中所有图都遵循定义graph_config→ 实例化图类 →run()→print(result)的统一四步范式下面逐一展开。所有图共用一个图配置graph_config字典来设置 LLM 模型及其他参数相关细节可参考 LLM 配置说明 与 图配置说明。此外所有图的构造器都接受可选的schema参数PydanticBaseModel子类用于约束输出结构若不提供或设为None输出 schema 将由 LLM 自行生成。二、SmartScraperGraph单页 LLM 抓取的基石SmartScraperGraph是最核心、最常用的图类型输入一条用户定义的 prompt 和一个 URL或本地文件路径由 LLM 从该单一来源中提取所需信息并以 JSON 格式返回。它也是 SearchGraph、SpeechGraph、OmniScraperGraph 等众多图的基础构建块。from scrapegraphai.graphs import SmartScraperGraph graph_config { llm: {...}, } smart_scraper_graph SmartScraperGraph( promptList me all the projects with their descriptions, sourcehttps://perinim.github.io/projects, configgraph_config, schemaschema ) result smart_scraper_graph.run() print(result)从源码 smart_scraper_graph.py#L72-L292 可以看到其默认流水线为FetchNode(抓取HTML) → ParseNode(解析/分块) → GenerateAnswerNode(LLM生成答案)FetchNode接收url | local_dir根据source以http开头还是本地路径自动选择输入键smart_scraper_graph.py#L67ParseNode按model_token指定的分块大小切分文档供 LLM 处理超长页面GenerateAnswerNode结合user_prompt、解析后的文档块与可选schema生成最终 JSON 答案。2.1 三种开关html_mode / reasoning / reattempt源码中的graph_variation_config字典smart_scraper_graph.py#L185-L268展示了该图可配置的三种行为开关它们决定了节点的增删配置键默认值作用html_modeFalse为True时跳过ParseNode直接把原始 HTML 交给 LLMreasoningFalse为True时在生成答案前插入ReasoningNode先推理再回答reattemptFalse为True时插入ConditionalNode 重试GenerateAnswerNode当答案为空或为 NA 时基于已有答案重新生成例如默认配置html_modeFalse, reasoningFalse, reattemptFalse对应fetch → parse → generate_answer三条边而三者全开时流水线变为fetch → parse → reasoning → generate_answer → conditional → regen实现推理 失败重试的闭环。2.2 SmartScraperMultiGraph多源版本SmartScraperMultiGraph与 SmartScraperGraph 行为类似区别在于source接收一个 URL 列表可同时抓取多个来源。其流水线smart_scraper_multi_graph.py#L72-L98为GraphIteratorNode(对每个URL运行SmartScraperGraph) → MergeAnswersNode(合并结果)from scrapegraphai.graphs import SmartScraperMultiGraph graph_config { llm: {...}, } smart_scraper_multi_graph SmartScraperMultiGraph( promptList me all the projects with their descriptions, source[https://perinim.github.io/projects, https://perinim.github.io/cv/], configgraph_config, schemaschema ) result smart_scraper_multi_graph.run() print(result)从文档来看ScriptCreatorMultiGraph与SmartScraperMultiGraph采用相同的多源设计思路通过GraphIteratorNode遍历每个来源运行子图再经MergeAnswersNode汇总答案因此当你需要同时对多个页面应用同一 prompt 时应选用 Multi 系列。三、SearchGraph只给 prompt自动全网搜索SearchGraph是构建在 SmartScraperGraph 之上的多页爬虫它只需要一条用户 prompt便会自动构造搜索查询、从搜索引擎抓取前 n 条结果、对每个结果运行一次 SmartScraperGraph最后合并所有页面的答案并以 JSON 返回。from scrapegraphai.graphs import SearchGraph graph_config { llm: {...}, embeddings: {...}, } # Create the SearchGraph instance search_graph SearchGraph( promptList me all the traditional recipes from Chioggia, configgraph_config, schemaschema ) # Run the graph result search_graph.run() print(result)注意与 SmartScraperGraph 不同SearchGraph不需要传source因为它自己搜索。其流水线search_graph.py#L64-L101为SearchInternetNode(生成搜索词并抓取前n条URL) → GraphIteratorNode(对每条URL运行SmartScraperGraph) → MergeAnswersNode(合并答案)两个值得关注的实现细节max_results控制搜索引擎抓取的结果条数默认值为 3search_graph.py#L48可通过graph_config[max_results]调整run()执行后会把本次考虑过的 URL 存入self.considered_urls并可通过search_graph.get_considered_urls()获取search_graph.py#L120-L127便于审计答案来自哪些网页。此外搜索流程还支持search_engine与serper_api_key配置search_graph.py#L72-L73可切换搜索引擎或使用 Serper 服务。四、SpeechGraph抓取 文本转语音SpeechGraph基于 SmartScraperGraph 的流水线在生成文字答案之后追加一步文本转语音TTS输入 prompt 与 URL或本地文件输出 JSON 格式的文字答案同时把答案合成为音频文件保存到本地。from scrapegraphai.graphs import SpeechGraph graph_config { llm: {...}, tts_model: {...}, } # ************************************************ # Create the SpeechGraph instance and run it # ************************************************ speech_graph SpeechGraph( promptMake a detailed audio summary of the projects., sourcehttps://perinim.github.io/projects/, configgraph_config, schemaschema ) result speech_graph.run() print(result)其流水线speech_graph.py#L68-L101为FetchNode → ParseNode → GenerateAnswerNode → TextToSpeechNode关键实现细节tts_model配置键用于指定语音合成模型源码中通过OpenAITextToSpeech(self.config[tts_model])构造 TTS 实例speech_graph.py#L89output_path指定音频文件保存路径默认值为output.mp3run()内部调用save_audio_from_bytes()写入音频文件speech_graph.py#L114-L118若 TTS 未能生成音频run()会抛出ValueError方便你排查配置问题。五、ScriptCreatorGraph让 LLM 生成抓取脚本ScriptCreatorGraph的目标不是直接给出提取结果而是生成一段可复用的 Python 抓取脚本输入 prompt 与 URL或本地文件输出使用指定库如 BeautifulSoup编写的爬虫代码。from scrapegraphai.graphs import ScriptCreatorGraph graph_config { llm: {...}, library: beautifulsoup4 } script_creator_graph ScriptCreatorGraph( promptCreate a Python script to scrape the projects., sourcehttps://perinim.github.io/projects/, configgraph_config, schemaschema ) result script_creator_graph.run() print(result)两个配置要点library必需配置项源码中直接以config[library]读取见 script_creator_graph.py#L53指定生成脚本所用的抓取库例如beautifulsoup4流水线script_creator_graph.py#L67-L112为FetchNode → ParseNode → GenerateScraperNode其中FetchNode会以script_creatorTrue模式抓取页面原始 HTMLParseNode关闭parse_html保留原始 HTML 供脚本生成参考GenerateScraperNode再结合 prompt、页面源码与目标库生成完整脚本。ScriptCreatorMultiGraph与单源版本行为类似但可同时处理多个来源同样通过GraphIteratorNode遍历各来源、生成多个脚本后由MergeGeneratedScriptsNode合并适合需要一次性为多个页面产出抓取脚本的场景。六、Omni 系列GPT-4o 时代的图文一体化爬取随着 GPT-4o 引入仓库新增了两个多模态图类型它们不仅能抓取文本还能爬取页面中的图片并生成文字描述。6.1 OmniScraperGraphOmniScraperGraph类似 SmartScraperGraph但在流水线中新增了图片理解环节可基于 prompt 提取项目标题、描述以及对应的图片链接与图片描述from scrapegraphai.graphs import OmniScraperGraph graph_config { llm: {...}, } omni_scraper_graph OmniScraperGraph( promptList me all the projects with their titles and image links and descriptions., sourcehttps://perinim.github.io/projects, configgraph_config, schemaschema ) result omni_scraper_graph.run() print(result)其流水线omni_scraper_graph.py#L70-L122为FetchNode → ParseNode(输出parsed_doc link_urls img_urls) → ImageToTextNode(对图片生成描述) → GenerateAnswerOmniNode(融合文本与图片描述生成答案)源码要点ParseNode开启parse_urlsTrue额外产出页面中的链接与图片 URLomni_scraper_graph.py#L79-L87max_images控制最多分析多少张图片默认值为 5omni_scraper_graph.py#L56ImageToTextNode使用OpenAIImageToText模型实例对图片做视觉理解omni_scraper_graph.py#L89-L96因此该图通常搭配 GPT-4o 等支持视觉的模型使用。6.2 OmniSearchGraphOmniSearchGraph是 SearchGraph 的多模态版本只需 prompt即可搜索、抓取搜索结果中的图文内容并输出 JSON。其执行流程为生成搜索查询 → 抓取搜索引擎前 n 条结果 → 对每条结果运行一次 OmniScraperGraph同步完成图片理解→ 合并所有答案。from scrapegraphai.graphs import OmniSearchGraph graph_config { llm: {...}, } # Create the OmniSearchGraph instance omni_search_graph OmniSearchGraph( promptList me all Chioggias famous dishes and describe their pictures., configgraph_config, schemaschema ) # Run the graph result omni_search_graph.run() print(result)从源码 omni_search_graph.py#L63-L96 可以看到其结构与 SearchGraph 完全对应唯一的区别是GraphIteratorNode内部运行的是OmniScraperGraph而非SmartScraperGraph。仓库提供的真实示例 examples/omni_scraper_graph/omni_search_openai.py 给出了完整可运行配置graph_config { llm: { api_key: openai_key, model: openai/gpt-4o, }, max_results: 2, max_images: 1, verbose: True, }示例还展示了通过omni_search_graph.get_execution_info()配合prettify_exec_info输出执行信息便于调试流水线各环节耗时。七、schema 参数约束输出的结构化结果types.rst 反复强调所有图构造函数都接受可选的schema参数。它接收一个PydanticBaseModel子类用于定义输出的 JSON 结构若未提供或为Noneschema 将由 LLM 自行推断。仓库示例 examples/smart_scraper_graph/openai/smart_scraper_schema_openai.py 展示了标准用法from pydantic import BaseModel, Field class Project(BaseModel): title: str Field(descriptionThe title of the project) description: str Field(descriptionThe description of the project) class Projects(BaseModel): projects: List[Project] graph_config { llm: { api_key: openai_key, model: openai/gpt-4o-mini, }, verbose: True, headless: False, } smart_scraper_graph SmartScraperGraph( promptList me all the projects with their description, sourcehttps://perinim.github.io/projects/, schemaProjects, configgraph_config, )schema最终会传递到GenerateAnswerNode/GenerateAnswerOmniNode/MergeAnswersNode等节点的node_config如 smart_scraper_graph.py#L135-L136促使 LLM 严格按预定义结构返回结果避免自由格式输出带来的解析成本。这在实际项目中非常有用例如将返回结果直接序列化为业务对象的字段或对接下游数据库入库。八、图配置参数速查表所有图共用一套graph_config字典其中llm为必需键部分图还需embeddings、tts_model、library。除 LLM 相关键外docs/source/scrapers/graph_config.rst 汇总了以下常用参数配置键适用图作用verbose所有图为True时向控制台打印调试信息headless所有图为False时打开浏览器访问 URL抓取 HTML 后立即关闭max_resultsSearchGraph / OmniSearchGraph搜索引擎抓取的最大结果数默认 3output_pathSpeechGraph音频文件保存路径默认output.mp3loader_kwargs所有图传递给Loader类的额外参数如proxyburr_kwargs所有图启用 Burr 可视化界面的额外参数max_imagesOmniScraperGraph / OmniSearchGraph最多分析的图片数默认 5cache_path所有图缓存文件保存路径若已存在则直接从该路径加载缓存additional_info所有图向图中默认 prompt 追加额外文本8.1 Burr 集成可视化抓取流水线burr_kwargs用于启用Burr——一个开源的状态机应用管理库——提供的本地 Web 可视化界面可直观看到抓取流水线节点与数据流。启用步骤pip install scrapegraphai[burr]然后运行图形界面burr在graph_config中配置burr_kwargs即可记录图执行过程graph_config { llm: {...}, burr_kwargs: { project_name: test-scraper, app_instance_id: some_id, } }从源码看abstract_graph.py#L99-L105只要检测到burr_kwargs图会开启use_burrTrue若未显式指定app_instance_id会自动生成一个 UUID方便多次运行的日志区分。8.2 代理轮换loader_kwargs 实战通过loader_kwargs[proxy]可配置代理。仓库免费代理服务基于free-proxy库可按条件筛选匿名、安全HTTPS、指定国家如意大利的代理graph_config { llm: {...}, loader_kwargs: { proxy: { server: broker, criteria: { anonymous: True, secure: True, countryset: {IT}, timeout: 10.0, max_shape: 3 }, }, }, }若已有自建代理服务器也可直接指定服务器地址与认证信息graph_config { llm: {...}, loader_kwargs: { proxy: { server: http://your_proxy_server:port, username: your_username, password: your_password, }, }, }代理相关的底层实现可进一步参考 scrapegraphai/utils/proxy_rotation.py 与测试 tests/utils/test_proxy_rotation.py。九、选型速查我应该用哪个 Graph任务需求推荐图必传参数从一个 URL/本地文件中按 prompt 提取信息SmartScraperGraphprompt、source从多个 URL 中按同一 prompt 提取信息SmartScraperMultiGraphprompt、source列表只给 prompt自动全网搜索并汇总SearchGraphprompt可选max_results提取信息并生成音频播报SpeechGraphprompt、source、tts_model生成指定库的抓取脚本ScriptCreatorGraphprompt、source、library多站点批量生成抓取脚本ScriptCreatorMultiGraphprompt、source列表、library从页面中同时提取文本与图片描述OmniScraperGraphprompt、source建议搭配视觉模型只给 prompt搜索图文并描述图片OmniSearchGraphprompt建议搭配视觉模型十、总结types.rst 所描述的八种图类型覆盖了 AI 抓取领域最常见的任务形态SmartScraperGraph是单页提取的基石SearchGraph把搜索 抓取流水线化SpeechGraph打通了提取 → 语音合成链路ScriptCreatorGraph让 LLM 直接产出可复用代码而 Omni 系列则借助 GPT-4o 的多模态能力把图片理解纳入抓取结果。理解每种图的节点流水线源码可在 scrapegraphai/graphs/ 目录下逐一查看与graph_config公共参数是正确选型、排障与二次定制的基础。进一步阅读可参考 LLM 配置本地 Ollama 模型、OpenAI/Gemini/Groq/Azure/HuggingFace/Anthropic 等 API 模型、图配置 以及 examples/ 目录下各图对应的完整示例脚本。赞分享网页爬虫人工智能AI 应用【免费下载链接】Scrapegraph-aiPython scraper based on AI项目地址https://gitcode.com/GitHub_Trending/sc/Scrapegraph-ai点击查看免费下载相关推荐解决ScrapeGraphAI中SmartScraperGraph的类型错误从原理到修复解决ScrapeGraphAI中SmartScraperGraph的类型错误从原理到修复 你是否在使用ScrapeGraphAI的SmartScraperGr网页爬虫人工智能AI 应用OWASP OWTF插件开发实战打造自定义安全测试工具OWASP OWTF插件开发实战打造自定义安全测试工具 OWASP OWTFOffensive Web Testing Framework是一款强大的开源网络安全应用安全后端TEN Framework Graph 配置完全指南从 property.json 到多图编排的实战解析TEN Framework Graph 配置完全指南从 property.json 到多图编排的实战解析 本篇指南聚焦 TEN Framework 中 图G人工智能AI Agent多模态语音AI 应用上一篇Static-Program-Analysis-Book上下文敏感分析深度解析如何实现工业级精度的静态分析下一篇react-slick响应式轮播完整指南3类断点配置适配所有屏幕创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网