Jina Reader:一键将网页内容转为适合 LLM 处理的文本格式,自动抓取和清洗网页内容,支持多种输出格式

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 功能:Jina Reader 能够将网页内容转换为适合 LLM 处理的纯文本格式,支持多种输出格式。
  2. 技术:基于网页抓取、内容清洗、自然语言处理等技术,确保提取内容的准确性和结构化。
  3. 应用:适用于内容聚合、SEO 优化、学术研究、客户服务等多种场景。

正文(附运行示例)

Jina Reader 是什么

公众号: 蚝油菜花 - reader

Jina Reader 是 Jina AI 推出的开源工具,旨在将互联网上的 HTML 网页内容转换为适合大型语言模型(LLMs)处理的纯文本格式。用户只需在网址前添加特定前缀,即可快速提取网页的主要内容,并用结构化文本形式输出,去除不必要的 HTML 标签和脚本。

该工具支持多种内容格式,包括 Markdown、HTML、Text 等,并具备流模式、JSON 模式和自动为图片生成描述的 Alt 生成模式,能够增强 LLMs 对网页内容的理解。

Jina Reader 的主要功能

  • 网页内容提取:将 HTML 网页转换为纯文本格式,去除不必要的标签和脚本。
  • 格式选择:支持将网页内容输出为 Markdown、HTML、Text、Screenshot、Pageshot 等多种格式。
  • 流模式:适用于大型和动态网页,支持更长时间的页面渲染,确保内容的完整性。
  • JSON模式:输出包含 URL、标题和内容的结构化 JSON 数据,便于后续处理。
  • Alt生成模式:为缺少 alt 标签的图片自动生成描述,帮助 LLMs 更好地理解网页中的图像内容。
  • 目标选择器和等待选择器:用 CSS 选择器指定页面中特定部分的内容提取,或等待特定元素出现后再提取内容。

Jina Reader 的技术原理

  • 网页抓取与解析:使用网络爬虫技术抓取网页内容,基于 HTML 解析器解析网页的 DOM 树结构,提取出网页的文本内容。
  • 内容清洗与结构化:清洗 HTML 标签、JavaScript 代码和 CSS 样式,只保留纯文本内容,并识别和提取网页中的标题、段落、链接、图片等结构化元素。
  • 自然语言处理(NLP):对提取的文本进行自然语言处理,提高文本的质量,例如去除停用词、词干提取等,并生成图像的替代文本(alt text)。
  • 动态内容处理:对于单页应用程序(SPA)和动态加载的内容,使用如 Puppeteer 这样的无头浏览器模拟用户交互,等待 JavaScript 执行完成,捕获最终的页面内容。
  • 流式处理与实时解析:支持流式解析网页内容,对于大型和动态网页尤为重要,能实时处理网页内容。

如何运行 Jina Reader

1. 使用 r.jina.ai 提取单个网页内容

只需在目标 URL 前添加 https://r.jina.ai/ 前缀即可。例如,提取维基百科关于人工智能的页面内容:

curl https://r.jina.ai/https://en.wikipedia.org/wiki/Artificial_intelligence
2. 使用 s.jina.ai 进行网页搜索

在搜索查询前添加 https://s.jina.ai/ 前缀。例如,搜索“2024 年美国总统大选谁会赢?”:

curl https://s.jina.ai/Who%20will%20win%202024%20US%20presidential%20election%3F
3. 使用流模式处理动态网页

对于动态加载的网页,可以使用流模式确保内容的完整性:

curl -H "Accept: text/event-stream" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

Jina 中,可以使用 executors 来实现将分词转为词向量的功能。常见的词向量模型有 Word2Vec、GloVe、FastText 等,这里以使用预训练的 Word2Vec 模型为例。 首先,在 `jina/exectuors/` 目录下创建一个新的 Python 文件,例如 `word2vec.py`。然后,导入 gensim 库 BaseExecutor 类: ```python from gensim.models import KeyedVectors from jina.executors import BaseExecutor ``` 在 `word2vec.py` 文件中,定义一个 Word2VecExecutor 类,继承自 BaseExecutor 类,用于加载预训练的 Word2Vec 模型将分词转为词向量: ```python class Word2VecExecutor(BaseExecutor): def __init__(self, model_path='data/word2vec.bin', *args, **kwargs): super().__init__(*args, **kwargs) self.model_path = model_path self.model = KeyedVectors.load_word2vec_format(model_path, binary=True) def encode(self, data, *args, **kwargs): return self.model[data] ``` 在 `__init__` 方法中,加载预训练的 Word2Vec 模型。在 `encode` 方法中,将分词作为输入数据,使用模型将其转为词向量,并返回结果。 最后,将这个 executor 添加到 Jina 流程中。在 `jina/config.yml` 文件中添加以下代码: ```yaml executors: - name: word2vec py_modules: word2vec metas: py_modules_version: '1.0' parameters: model_path: data/word2vec.bin flows: encode: uses: word2vec ``` 这个配置文件中,定义了一个名为 `word2vec` 的 executor,并指定预训练模型的路径。在 `flows` 中,使用 `word2vec` executor 将输入数据转为词向量。 现在,使用以下代码启动 Jina: ```bash jina pod --uses config.yml --port-in 55555 --port-out 55556 ``` 在另一个终端中,可以使用以下代码测试这个 executor: ```python from jina import Client, Document client = Client(port=55555) doc = Document(text='hello world') resp = client.encode([doc], output_fn=lambda x: x[0].embedding) print(resp) ``` 这个代码会将字符串 `'hello world'` 转为词向量,并输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值