跳转到主内容

抓取选项

GPT Researcher 现在提供多种网页抓取方法:使用 BeautifulSoup 进行静态抓取,使用 Selenium 进行动态抓取,以及使用 Tavily Extract 进行大规模抓取。本文档将解释如何在这些方法之间切换,以及每种方法的优点。

配置抓取方法

您可以通过设置 SCRAPER 环境变量来选择您偏好的抓取方法。

  1. 对于 BeautifulSoup (静态抓取)

    export SCRAPER="bs"
  2. 对于动态浏览器抓取,可以使用 Selenium

    export SCRAPER="browser"

    或者使用 NoDriver (ZenDriver)

    export SCRAPER="nodriver"
    pip install zendriver
  3. 对于**生产**环境,您可以将 Scraper 设置为 `tavily_extract` 或 `firecrawl`。通过 Tavily,您可以大规模抓取网站,而无需费心设置代理、管理 cookie 或处理验证码。请注意,您需要拥有 Tavily 账户和 API 密钥才能使用此选项。要了解更多关于 Tavily Extract 的信息,请参阅此处。请确保首先安装 pip 包 `tavily-python`。然后:

    export SCRAPER="tavily_extract"

    FireCrawl 同样允许您大规模地抓取网站。FireCrawl 还提供开源代码用于自托管服务器,通过将抓取网站的 markdown 版本传递给 LLM,提供了比 BeautifulSoup 更好的抓取质量。您需要拥有 FireCrawl 账户(官方服务)以获取 API 密钥,或者需要自托管的 URL 和 API 密钥(如果您为自托管服务器设置了)才能使用此选项。请确保安装 pip 包 `firecrawl-py`。然后:

    export SCRAPER="firecrawl"

注意:如果未设置,GPT Researcher 将默认使用 BeautifulSoup 进行抓取。

抓取方法详解

BeautifulSoup (静态抓取)

SCRAPER="bs" 时,GPT Researcher 使用 BeautifulSoup 进行静态抓取。此方法:

  • 发送单个 HTTP 请求以获取页面内容
  • 解析静态 HTML 内容
  • 从解析后的 HTML 中提取文本和数据

优点

  • 更快、更轻量
  • 无需额外设置
  • 适用于简单的静态网站

局限性

  • 无法处理由 JavaScript 加载的动态内容
  • 可能会错过需要用户交互才能显示的内容

Selenium (浏览器抓取)

SCRAPER="browser" 时,GPT Researcher 使用 Selenium 进行动态抓取。此方法:

  • 打开一个真实的浏览器实例(默认为 Chrome)
  • 加载页面并执行 JavaScript
  • 等待动态内容加载
  • 从完全渲染的页面中提取文本和数据

优点

  • 可以抓取动态加载的内容
  • 模拟真实用户交互(滚动、点击等)
  • 适用于复杂的、大量使用 JavaScript 的网站

局限性

  • 比静态抓取慢
  • 需要更多系统资源
  • 需要额外设置(安装 Selenium 和 WebDriver)

NoDriver (浏览器抓取)

Selenium 的替代方案,可能具有更好的性能。

设置

pip install zendriver

SCRAPER="tavily_extract" 时,GPT Researcher 使用 Tavily 的 Extract API 进行网页抓取。此方法:

  • 利用 Tavily 强大的基础设施进行大规模网页抓取
  • 自动处理验证码、JavaScript 渲染和反机器人措施
  • 提供干净、结构化的内容提取

优点

  • 生产就绪且高度可靠
  • 无需管理代理或处理速率限制
  • 在大多数网站上具有出色的成功率
  • 处理静态和动态内容
  • 内置内容清理和格式化
  • 通过 Tavily 的分布式基础设施实现快速响应

设置

  1. app.tavily.com 创建一个 Tavily 账户
  2. 从仪表盘获取您的 API 密钥
  3. 安装 Tavily Python SDK
    pip install tavily-python
  4. 设置您的 Tavily API 密钥
    export TAVILY_API_KEY="your-api-key"

使用注意事项

  • 需要 Tavily API 密钥和账户
  • API 调用根据您的 Tavily 套餐计费
  • 最适合对可靠性有严格要求的生产环境
  • 是需要稳定抓取结果的企业和应用的理想选择

当 `SCRAPER="firecrawl"` 时,GPT Researcher 使用 FireCrawl Scrape API 以 markdown 格式进行网页抓取。此方法:

  • 利用 FireCrawl 强大的基础设施进行大规模网页抓取
  • 或使用自托管的 FireCrawl 服务器。
  • 自动处理验证码、JavaScript 渲染和反机器人措施
  • 以 markdown 格式提供干净、结构化的内容提取。

优点

  • 生产就绪且高度可靠
  • 无需管理代理或处理速率限制
  • 在大多数网站上具有出色的成功率
  • 处理静态和动态内容
  • 内置内容清理和格式化
  • 通过 FireCrawl 的分布式基础设施实现快速响应
  • 使用 FireCrawl 自托管易于设置

设置 (由 FireCrawl 提供的官方服务)

  1. firecrawl.dev/app 创建一个 FireCrawl 账户
  2. 从仪表盘获取您的 API 密钥
  3. 安装 FireCrawl Python SDK
    pip install firecrawl-py
  4. 设置您的 FireCrawl API 密钥
    export FIRECRAWL_API_KEY=<your-firecrawl-api>

设置 (使用自托管服务器)

  1. 托管您的 FireCrawl。阅读他们的自托管指南本地运行指南
  2. 获取您的服务器 URL 和 API 密钥(如果已设置)。
  3. 安装 FireCrawl Python SDK
    pip install firecrawl-py
  4. 设置您的 FireCrawl API 密钥
    export FIRECRAWL_API_KEY=<your-firecrawl-api>

注意:如果您的自托管服务器未设置身份验证,`FIRECRAWL_API_KEY` 可以为空(`FIRECRAWL_API_KEY=""`)。他们的云服务和开源服务之间会存在一些差异。要了解 FireCrawl 选项之间的差异,请阅读这里

使用注意事项

  • 需要 FireCrawl API 密钥和账户,或自托管服务器
  • API 调用根据您的 FireCrawl 套餐计费(使用自托管 FireCrawl 方法基本可以免费)
  • 最适合对可靠性有严格要求的生产环境(针对其云服务)
  • 是需要稳定抓取结果的企业和应用的理想选择
  • 为个人使用提供强大的抓取选项

Selenium 的额外设置

如果您选择使用 Selenium (SCRAPER="browser"),您需要:

  1. 安装 Selenium 包

    pip install selenium
  2. 为您的浏览器下载相应的 WebDriver

    确保 WebDriver 在您系统的 PATH 中。

选择正确的方法

  • 在以下情况使用 BeautifulSoup (静态):

    • 内容大多为静态的简单网站
    • 速度是优先考虑的场景
    • 当您不需要与页面进行交互时
  • 在以下情况使用 Selenium (动态):

    • 内容通过 JavaScript 加载的网站
    • 需要滚动或点击才能加载更多内容的网站
    • 当您需要模拟用户交互时

故障排除

  • 如果 Selenium 无法启动,请确保您已安装正确的 WebDriver 并且它在您系统的 PATH 中。
  • 如果您遇到与 Selenium 相关的 ImportError,请确保您已安装 Selenium 包。
  • 如果抓取器遗漏了预期的内容,请尝试在静态和动态抓取之间切换,看看哪种方法更适合您的目标网站。

请记住,静态抓取和动态抓取之间的选择会显著影响 GPT Researcher 能够收集的数据的质量和完整性。请选择最适合您研究需求和目标网站的方法。