m92vyas/llm-reader
Turn Webpage to LLM friendly input text. Similar to Firecrawl and Jina Reader API. Makes RAG, AI web scraping, image & webpage links extraction easy.
llm‑reader – 将任意网页转换为适合LLM的文本
功能
- 获取URL(或任何HTML字符串),去除网页中的噪声部分,生成适合大语言模型提示的干净markdown风格文本。
- 处理表格、链接、图片及其他结构化元素,使LLM能以最小的令牌浪费进行提取。
- 基于Playwright,提供快速、并发的无头浏览(取代旧版Selenium实现)。
重要性
当您将原始HTML输入模型时,会在标签、脚本和布局噪声上浪费令牌,模型往往错过实际需要的数据(产品名称、价格、表格等)。llm‑reader自动化预处理步骤,让您专注于提示词和下游提取逻辑。
核心组件
get_page_source(url):异步辅助函数,启动Playwright浏览器,加载页面并返回原始HTML。您可以根据需要替换为其他爬虫或付费API。get_processed_text(html, url):异步函数,将HTML转换为针对LLM消费优化的干净markdown式表示。
安装
pip install git+https://github.com/m92vyas/llm-reader.git
# Playwright设置(下载浏览器和系统依赖)
playwright install
playwright install-deps
基本用法
import asyncio
from url_to_llm_text.get_html_text import get_page_source
from url_to_llm_text.get_llm_input_text import get_processed_text
async def llm_ready(url: str) -> str:
html = await get_page_source(url) # 获取原始HTML
clean = await get_processed_text(html, url) # 转换为LLM友好文本
return clean
text = asyncio.run(llm_ready("https://example.com"))
print(text)
然后可以将text嵌入任何提示中,根据模型上下文窗口大小选择性地截断。
示例:提取产品数据
README展示了完整工作流程:从IKEA获取类别页面,运行get_processed_text,然后为OpenAI的gpt‑4o‑mini构建JSON式提示。模型返回包含名称、链接、图片URL和价格的结构化产品列表。
特点与亮点
- 异步与并发:Playwright允许并行抓取多个页面。
- Markdown输出:以LLM易理解的格式保留标题、列表、表格和链接。
- 可插拔源:可以用代理服务、付费API(如Scrappey)或自己的Selenium设置替换
get_page_source。 - 开源MIT许可证 – 可自由修改并嵌入商业管道。
局限性
- 该库仅准备文本;您仍需自行编写LLM提示并处理令牌限制。
- 复杂的JavaScript重度站点可能仍需额外等待或自定义Playwright脚本。
- 不内置OCR或PDF处理 – 这些由作者的其他服务(ParseExtract、RedactLocal)提供。
进一步阅读
- 详细文档:https://github.com/m92vyas/llm-reader/wiki/Documentation
- 配套爬虫:https://github.com/m92vyas/AI-web_scraper (添加搜索、多页面爬取和提示模板)。
适合哪些人使用
- 构建需要干净网页文本的RAG管道的数据工程师。
- 从电子商务或新闻网站提取结构化信息(价格、规格、表格)的研究人员。
- 任何想要Firecrawl或Jina Reader等商业服务免费替代品的人。
相关
- 项目
- 项目
- 项目
- 项目