Documentation has been updated: see help center and changelog in one place.

LlamaIndex

利用 LlamaIndex 与 Oxylabs 网页爬虫 API 的集成,轻松摄取在线内容并构建基于 LLM 的工作流。

LlamaIndex 与 Oxylabs 网页爬虫 API 使您能够在同一工作流中通过 LLM(大型语言模型)抓取并处理网页数据。

概览

LlamaIndex 是一个用于将外部数据源与 LLM 应用结合的数 据框架。将其与 Oxylabs 网页爬虫 API 一起用于:

  • 抓取结构化数据而无需处理 CAPTCHA、IP 阻止或 JS 渲染

  • 在同一管道中使用 LLM 处理结果

  • 构建从提取到 AI 驱动输出的端到端工作流

快速开始

创建您的 API 用户凭证: 注册免费试用或在 Oxylabs 仪表板 注册试用或购买产品以创建您的 API 用户凭证(USERNAMEPASSWORD).

购买产品。如果您的账户需要多个 API 用户,请联系客户支持或使用我们的 24/7 在线聊天支持发送信息。

环境设置

在本指南中我们将使用 Python 编程语言。使用 pip 安装所需库:

pip install -qU llama-index llama-index-readers-oxylabs llama-index-readers-web

在项目目录中创建一个 .env 文件,内含您的 Oxylabs 网页爬虫 API 凭证和 OpenAI API 密钥:

OXYLABS_USERNAME=your_API_username
OXYLABS_PASSWORD=your_API_password
OPENAI_API_KEY=your-openai-key

在您的 Python 脚本中加载这些环境变量:

import os
from dotenv import load_dotenv

load_dotenv()

集成方法

在 LlamaIndex 中通过 Web Scraper API 访问网页内容有两种方式:

Oxylabs Reader

llama-index-readers-oxylabs 模块包含可让您从各种来源抓取数据的特定类:

API 数据源
读取器类

Google 网页搜索

OxylabsGoogleSearchReader

Google 搜索广告

OxylabsGoogleAdsReader

Amazon 产品

OxylabsAmazonProductReader

Amazon 搜索

OxylabsAmazonSearchReader

Amazon 评论

OxylabsAmazonReviewsReader

YouTube 文本转录

OxylabsYoutubeTranscriptReader

例如,您可以提取 Google 搜索结果:

import os
from dotenv import load_dotenv
from llama_index.readers.oxylabs import OxylabsGoogleSearchReader

load_dotenv()
reader = OxylabsGoogleSearchReader(
    os.getenv('OXYLABS_USERNAME'), os.getenv('OXYLABS_PASSWORD')
)
results = reader.load_data({
    'query': 'best pancake recipe',
    'parse': True
})
print(results[0].text)

Oxylabs Web 阅读器

使用 OxylabsWebReader 类,您可以从任何 URL 提取数据:

import os
from dotenv import load_dotenv
from llama_index.readers.web import OxylabsWebReader

load_dotenv()
reader = OxylabsWebReader(
    os.getenv('OXYLABS_USERNAME'), os.getenv('OXYLABS_PASSWORD')
)
results = reader.load_data(
    [
        'https://sandbox.oxylabs.io/products/1',
        'https://sandbox.oxylabs.io/products/2'
    ]
)
for result in results:
    print(result.text + '\n')

构建一个基础 AI 搜索代理

下面是一个可以搜索 Google 并回答问题的简单 AI 代理示例:

import os
import asyncio
from dotenv import load_dotenv
from llama_index.readers.oxylabs import OxylabsGoogleSearchReader
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI

load_dotenv()
reader = OxylabsGoogleSearchReader(
    os.getenv('OXYLABS_USERNAME'), os.getenv('OXYLABS_PASSWORD')
)

def web_search(query: str) -> str:
    results = reader.load_data({'query': query, 'parse': True})
    return results[0].text

agent = FunctionAgent(
    tools=[web_search],
    llm=OpenAI(model='gpt-4o-mini'),
    max_function_calls=1,
    system_prompt=(
        'Craft a short Google search query to use with the `web_search` tool. '
        'Analyze the most relevant results and answer the question.'
    )
)

async def main():
    response = await agent.run('How did DeepSeek affect the stock market?')
    print(response)

if __name__ == '__main__':
    asyncio.run(main())

高级配置

处理动态内容

Web Scraper API 可以处理 JavaScript 渲染:

reader = OxylabsWebReader(
    os.getenv('OXYLABS_USERNAME'), os.getenv('OXYLABS_PASSWORD')
)

results = reader.load_data(
    [
        'https://quotes.toscrape.com/js/'
    ],
    {'render': 'html'}
)

设置用户代理类型

您可以指定不同的用户代理:

reader = OxylabsWebReader(
    os.getenv('OXYLABS_USERNAME'), os.getenv('OXYLABS_PASSWORD')
)

results = reader.load_data(
    [
        'https://sandbox.oxylabs.io/products/1'
    ],
    {'user_agent_type': 'mobile'}
)

使用目标特定参数

许多目标特定的爬虫支持额外参数:

reader = OxylabsGoogleSearchReader(
    os.getenv('OXYLABS_USERNAME'),
    os.getenv('OXYLABS_PASSWORD')
)
results = reader.load_data({
    'query': 'iphone',
    'parse': True,
    'domain': 'com',
    'start_page': 2,
    'pages': 3
})

创建向量索引

LlamaIndex 在从网页内容构建向量索引方面特别有用:

import os
from dotenv import load_dotenv
from llama_index.readers.web import OxylabsWebReader
from llama_index.core import Settings, VectorStoreIndex
from llama_index.llms.openai import OpenAI

load_dotenv()
reader = OxylabsWebReader(
    os.getenv('OXYLABS_USERNAME'), os.getenv('OXYLABS_PASSWORD')
)
documents = reader.load_data([
    'https://sandbox.oxylabs.io/products/1',
    'https://sandbox.oxylabs.io/products/2'
])

# 配置 LlamaIndex 设置
Settings.llm = OpenAI(model='gpt-4o-mini')

# 创建索引
index = VectorStoreIndex.from_documents(documents)

# 查询索引
query_engine = index.as_query_engine()
response = query_engine.query('What is the main topic of these pages?')
print(response)

最后更新于

这有帮助吗?