抓取选项
GPT Researcher 现在提供多种网页抓取方法:使用 BeautifulSoup 进行静态抓取,使用 Selenium 进行动态抓取,以及使用 Tavily Extract 进行大规模抓取。本文档将解释如何在这些方法之间切换,以及每种方法的优点。
配置抓取方法
您可以通过设置 SCRAPER 环境变量来选择您偏好的抓取方法。
-
对于 BeautifulSoup (静态抓取)
export SCRAPER="bs" -
对于动态浏览器抓取,可以使用 Selenium
export SCRAPER="browser"或者使用 NoDriver (ZenDriver)
export SCRAPER="nodriver"
pip install zendriver -
对于**生产**环境,您可以将 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
Tavily Extract (推荐用于生产环境)
当 SCRAPER="tavily_extract" 时,GPT Researcher 使用 Tavily 的 Extract API 进行网页抓取。此方法:
- 利用 Tavily 强大的基础设施进行大规模网页抓取
- 自动处理验证码、JavaScript 渲染和反机器人措施
- 提供干净、结构化的内容提取
优点
- 生产就绪且高度可靠
- 无需管理代理或处理速率限制
- 在大多数网站上具有出色的成功率
- 处理静态和动态内容
- 内置内容清理和格式化
- 通过 Tavily 的分布式基础设施实现快速响应
设置
- 在 app.tavily.com 创建一个 Tavily 账户
- 从仪表盘获取您的 API 密钥
- 安装 Tavily Python SDK
pip install tavily-python - 设置您的 Tavily API 密钥
export TAVILY_API_KEY="your-api-key"
使用注意事项
- 需要 Tavily API 密钥和账户
- API 调用根据您的 Tavily 套餐计费
- 最适合对可靠性有严格要求的生产环境
- 是需要稳定抓取结果的企业和应用的理想选择
FireCrawl (推荐用于生产环境)
当 `SCRAPER="firecrawl"` 时,GPT Researcher 使用 FireCrawl Scrape API 以 markdown 格式进行网页抓取。此方法:
- 利用 FireCrawl 强大的基础设施进行大规模网页抓取
- 或使用自托管的 FireCrawl 服务器。
- 自动处理验证码、JavaScript 渲染和反机器人措施
- 以 markdown 格式提供干净、结构化的内容提取。
优点
- 生产就绪且高度可靠
- 无需管理代理或处理速率限制
- 在大多数网站上具有出色的成功率
- 处理静态和动态内容
- 内置内容清理和格式化
- 通过 FireCrawl 的分布式基础设施实现快速响应
- 使用 FireCrawl 自托管易于设置
设置 (由 FireCrawl 提供的官方服务)
- 在 firecrawl.dev/app 创建一个 FireCrawl 账户
- 从仪表盘获取您的 API 密钥
- 安装 FireCrawl Python SDK
pip install firecrawl-py - 设置您的 FireCrawl API 密钥
export FIRECRAWL_API_KEY=<your-firecrawl-api>
设置 (使用自托管服务器)
- 托管您的 FireCrawl。阅读他们的自托管指南或本地运行指南
- 获取您的服务器 URL 和 API 密钥(如果已设置)。
- 安装 FireCrawl Python SDK
pip install firecrawl-py - 设置您的 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"),您需要:
-
安装 Selenium 包
pip install selenium -
为您的浏览器下载相应的 WebDriver
- 对于 Chrome:ChromeDriver
- 对于 Firefox:GeckoDriver
- 对于 Safari:内置,无需下载
确保 WebDriver 在您系统的 PATH 中。
选择正确的方法
-
在以下情况使用 BeautifulSoup (静态):
- 内容大多为静态的简单网站
- 速度是优先考虑的场景
- 当您不需要与页面进行交互时
-
在以下情况使用 Selenium (动态):
- 内容通过 JavaScript 加载的网站
- 需要滚动或点击才能加载更多内容的网站
- 当您需要模拟用户交互时
故障排除
- 如果 Selenium 无法启动,请确保您已安装正确的 WebDriver 并且它在您系统的 PATH 中。
- 如果您遇到与 Selenium 相关的
ImportError,请确保您已安装 Selenium 包。 - 如果抓取器遗漏了预期的内容,请尝试在静态和动态抓取之间切换,看看哪种方法更适合您的目标网站。
请记住,静态抓取和动态抓取之间的选择会显著影响 GPT Researcher 能够收集的数据的质量和完整性。请选择最适合您研究需求和目标网站的方法。