ARTICLE DETAIL

资讯详情

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

cognee 怎么抓取网页 URL 并按 CSS 选择器规则提取内容入库

cognee 怎么抓取网页 URL 并按 CSS 选择器规则提取内容入库 cognee 怎么抓取网页 URL 并按 CSS 选择器规则提取内容入库【免费下载链接】cogneeCognee is the open-source AI memory platform for agents. Give your AI agents persistent long-term memory across sessions with a self-hosted knowledge graph engine.项目地址: https://gitcode.com/GitHub_Trending/co/cognee目标很具体把一个网页 URL 交给 cognee让它抓取页面 HTML按你指定的 CSS 选择器规则标题、正文、链接等抽取内容而不是整页照单全收最后把抽取结果进入 cognee 的知识图。cognee 的beautiful_soup_loader就是干这件事的URL 先被抓取并保存为.html文件再按extraction_rules提取为文本随后走入库与建图流程。适用前提均来自仓库文档Python 3.10–3.14见 README.md 的 Quickstart能访问目标 URL 的网络环境。官方示例抓取的是一个在线 Wikipedia 端点因此也受该页面 HTML 结构变化的影响见 示例脚本 开头的说明内容处理需要 LLM。默认使用 OpenAI 做语言模型和嵌入需要设置LLM_API_KEY例如import os os.environ[LLM_API_KEY] YOUR_OPENAI_API_KEY准备安装 cognee按 README.md 的安装方式uv pip install cognee也支持 pip 或你习惯的 Python 包管理器。extraction_rules 的写法抓取时传给 loader 的核心参数是extraction_rules它决定从 HTML 里取哪些内容。规则定义在 beautiful_soup_loader.py 的ExtractionRule中每条规则是一个字典支持的键selectorCSS 选择器xpathXPath 表达式使用 XPath 需要安装lxml否则抛出RuntimeErrorattr要提取的 HTML 属性例如a标签的hrefallTrue时提取所有匹配元素False默认时只取第一个匹配join_with多个元素拼接用的分隔符默认 。规则值也可以直接写成一个 CSS 选择器字符串等价的规范化结果就是selector该字符串。如果整条extraction_rules不传loader 会使用一份内置的默认规则覆盖title、meta、article、h1–h6、p、ul/ol、table等常见元素。两个实现层面的行为写规则时值得知道去重一条规则已提取过的元素其子元素会被后续更宽泛的规则跳过避免正文被重复抽取回退如果页面没有任何 HTML 标签例如上游已输出纯文本loader 会把内容当纯文本直接保存并打一条 warning 日志。主路径用 cognee.remember 抓取并入库仓库给出的完整可运行示例是 examples/guides/web_url_content_ingestion_example.py。注意示例第一行await cognee.forget(everythingTrue)会清空全部已存记忆——这是示例为了让每次运行结果可重现而做的清理如果你的环境里已有需要保留的数据不要执行这一行。其余部分可以按原样运行import asyncio from os import path import cognee async def main(): await cognee.forget(everythingTrue) print(Data forgotten.) extraction_rules { title: {selector: title}, headings: {selector: h1, h2, h3, all: True}, links: { selector: a, attr: href, all: True, }, paragraphs: {selector: p, all: True}, } await cognee.remember( https://en.wikipedia.org/api/rest_v1/page/html/Large_language_model, incremental_loadingFalse, preferred_loaders{beautiful_soup_loader: {extraction_rules: extraction_rules}}, self_improvementFalse, ) print(Knowledge graph created.) graph_visualization_path path.join( path.dirname(__file__), .artifacts, web_url_example.html ) await cognee.visualize_graph(graph_visualization_path) if __name__ __main__: asyncio.run(main())几个参数的作用preferred_loaders{beautiful_soup_loader: {extraction_rules: ...}}指定用beautiful_soup_loader处理该 URL并把抽取规则传给它。这是集成测试中同样验证过的写法incremental_loadingFalse不做增量加载直接全量处理该 URLself_improvementFalse跳过 self-improvement 步骤让示例只做抓取和建图这一件事。按 README.md 的说明cognee.remember会执行 add cognify improve即抓取、建图一步到位。如果你只想把内容存进来、之后再手动触发处理可以改用cognee.add见 add.py 的签名与示例同样通过preferred_loaders传规则await cognee.add( https://example.com/, preferred_loaders{beautiful_soup_loader: {extraction_rules: extraction_rules}}, )cognee.add只负责入库add_pipeline文档给出的后续步骤是先cognee.add再cognee.cognify处理成知识图最后用cognee.search查询。验证抓取与提取结果文档中可用的验证方式按顺序是运行输出示例脚本成功时依次打印Data forgotten.和Knowledge graph created.示例输出。存储落盘检查test_url_adding_e2e.py 展示了两级产物——URL 抓取后先保存为.html文件文件存在且非空loader 处理后生成同基名的.txt提取文本文件。你可以按同样方式检查本地存储目录找到.html文件后确认存在同名.txt且非空。可视化检查cognee.visualize_graph生成的web_url_example.html示例输出路径写入脚本目录下的.artifacts/打开后可看到按规则抽取内容建出的图。内容查询入库完成后用cognee.recall或cognee.search查询页面里应存在的实体能召回结果即说明内容已被抽取并索引。可选分支带调度的抓取任务 web_scraper_task如果需要“定时抓一批 URL 并把抓取任务本身也记进图”仓库提供了低层任务cron_web_scraper_task见 web_scraper_task.py用法示例在 web_scraping_test.pyfrom cognee.tasks.web_scraper import cron_web_scraper_task await cron_web_scraper_task( urlhttps://example.com/, extraction_rules{ title: {selector: title}, paragraphs: {selector: p, all: True}, }, # schedule0 0 * * *, # 提供 cron 表达式则按周期调度不传则立即执行一次 )与主路径的区别和注意事项它会把ScrapingJob、WebSite、WebPage三类节点以及is_scraping/is_part_of关系写进图库WebPage节点上会记录所用的extraction_rules传了extraction_rules时会自动构造DefaultCrawlerConfig(extraction_rules...)抓取工具保持为 BeautifulSoup如果没传规则而环境里有TAVILY_API_KEY工具会改为 Tavily两者都有时 Tavily 优先有KEENABLE_API_KEY时则可能走 Keenable——想固定用 CSS 规则抓取就显式传extraction_rules需要 APScheduler模块导入失败时会提示pip install APScheduler3.10未提供任何抓取配置无规则、无 tavily/keenable/soup 配置时会抛TypeError。限制与不支持项loader 只处理html扩展名与text/html、text/plainMIME 类型的输入URL 抓取保存的就是 HTML 文件规则才会在其上生效选择规则时见 LoaderEngine.py。XPath 规则依赖lxml未安装会直接报错此时改用 CSS 选择器。官方示例依赖一个在线 Wikipedia 端点页面结构变化可能让选择器失配失配时不会抛错而是提取结果为空或变少需要结合第 2 步的.txt落盘检查来确认实际抽到了什么。loader 文档说明其支持 robots.txt 处理与限流并发、按域名的crawl_delay但抓取到的WebPage节点上status_code等字段由任务代码固定写为 200见 web_scraper_task.py 中status_code200的构造不要把该字段当作真实 HTTP 状态。下一步若要把抽取出的网页记忆接入已有 agent可参考 README.md 的 “Connect your agent” 部分Plugins and MCP。【免费下载链接】cogneeCognee is the open-source AI memory platform for agents. Give your AI agents persistent long-term memory across sessions with a self-hosted knowledge graph engine.项目地址: https://gitcode.com/GitHub_Trending/co/cognee创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表