网络搜刮已经从简单的基于规则的提取发展到依靠大型语言模型(LLM)进行上下文感知数据提取的更先进技术。ScrapegraphAI走在这一演进的前沿,通过 OpenAI、Gemini 等强大的 LLM,甚至 Ollama 等本地模型实现网络搜刮。在本篇博客中,我们将深入探讨 ScrapegraphAI 是什么、如何工作,并通过一个实际示例介绍如何利用代理集成从网站上搜刮数据。
在本博客中,我们将介绍
ScrapegraphAI 是一个强大的网络搜刮框架(开源),它利用大型语言模型从网站中动态提取数据。与依赖僵化的 CSS 选择器或 XPath 的传统搜刮工具不同,ScrapegraphAI 使用 LLMs 来解释和提取各种来源的结构化数据,包括动态网页和 PDF 等文件。您只需指定所需的信息,让 ScrapeGraphAI 来完成繁重的工作,与传统的搜索工具相比,它提供了一种更灵活、维护成本更低的选择。ScrapegraphAI 的一个主要功能是让用户为想要提取的数据定义模式。您可以为输出指定一种结构化格式,ScrapegraphAI 会调整提取的数据,使其与该模式相匹配。
ScrapegraphAI 的突出特点之一是在选择 LLM 方面的灵活性,它支持
ScrapegraphAI 提供多种标准刮擦管道,以满足各种需求。其中最常见的包括
在下一节中,我们将重点介绍SmartScraperGraph,它只需提供提示和源 URL 即可进行单页面刮擦。
要跟上进度,您需要安装一些依赖项。运行以下命令即可:
pipinstallscrapegraphai openai python-dotenv
playwright安装
安装完成后,请确保您已准备好OpenAI API 密钥。将其保存在 .env 文件中,以确保凭据安全:
OPENAI_APIKEY=your_openai_api_key
假设我们想提取 Books to Scrape 上所有书籍的信息,包括
下面是一个使用 ScrapegraphAI 的SmartScraperGraph 管道的代码示例:
import os
from dotenv import load_dotenv
from scrapegraphai.graphs import SmartScraperGraph
# Load the OpenAI API key from .env file
load_dotenv()
openai_key = os.getenv("OPENAI_APIKEY")
# Define configuration for the LLM
graph_config = {
"llm": {
"api_key": openai_key,
"model": "openai/gpt-4o-mini",
},
}
prompt = """
Extract all the books from this website including
- Book Name
- Price
- Availability
- Reviews
"""
# Create the SmartScraperGraph instance
smart_scraper_graph = SmartScraperGraph(
prompt=prompt,
source="https://books.toscrape.com/",
config=graph_config
)
if __name__ == '__main__':
result = smart_scraper_graph.run()
print(result)
GPT-4o-mini
提供 API 密钥并指定模型名称,就可以创建模型。运行()
方法开始搜索过程,搜索结果将以字典列表的形式打印出来,每个字典包含一本书的详细信息。下面是输出结果的示例:
{'Book Name': 'A Light in the Attic', 'Price': '£51.77', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Tipping the Velvet', 'Price': '£53.74', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Soumission', 'Price': '£50.10', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Sharp Objects', 'Price': '£47.82', 'Availability': 'In stock', 'Reviews': 'NA'},
# ... more books ...
正如您所看到的,刮板成功地以结构化格式获取了每本书的详细信息,可在数据管道中使用。
在进行大规模搜刮或针对有反搜刮措施的网站进行搜刮时,集成代理对避免 IP 禁止、验证码和速率限制至关重要。使用代理不仅能提供匿名性,还能确保您不间断地抓取大量数据。
最好的选择之一就是住宅代理,因为它们来自真实的住宅 IP 地址,因此更难被发现和拦截。
住宅代理服务器ProxyScrape是网络搜索的理想选择,尤其是在针对有严格反搜索措施的网站时。我们提供来自不同地点的旋转 IP 地址,确保您的请求看起来像是来自真实用户。这有助于绕过限制、规避禁令,并确保持续访问您需要的数据。
现在让我们看看代理如何与 ScrapegraphAI 集成:
from dotenv import load_dotenv
import os
from scrapegraphai.graphs import SmartScraperGraph
# Load the OpenAI API key from .env file
load_dotenv()
openai_key = os.getenv("OPENAI_APIKEY")
# Define the configuration with proxy integration
graph_config = {
"llm": {
"api_key": openai_key,
"model": "openai/gpt-4o-mini",
},
"loader_kwargs": {
"proxy": {
"server": "rp.proxyscrape.com:6060",
"username": "your_username",
"password": "your_password",
},
},
}
prompt = """
Extract all the books from this website including
- Book Name
- Price
- Availability
- Reviews
"""
# Create the SmartScraperGraph instance
smart_scraper_graph = SmartScraperGraph(
prompt=prompt,
source="https://books.toscrape.com/",
config=graph_config
)
# Run the scraper and print the result
if __name__ == '__main__':
result = smart_scraper_graph.run()
print(result)
loader_kwargs
键中的 graph_config
.在这里,您可以定义代理服务器地址、用户名和密码。在这篇博客中,我们探讨了ScrapegraphAI 的强大功能,它是一种现代网络搜刮工具,使用大型语言模型 (LLM) 智能地从网站中提取结构化数据。我们介绍了它的主要功能,包括SmartScraperGraph 等各种刮擦管道,并提供了一个使用 OpenAI 的GPT-4o-mini模型从网站上刮擦书籍数据的实际示例。
此外,我们还展示了如何集成代理服务器,尤其是ProxyScrape 的住宅代理服务器。代理对于保持匿名、绕过限制和保持数据访问至关重要,尤其是对于使用 IP 禁止或速率限制等反搜索策略的网站。
通过集成ProxyScrape 的住宅代理,您可以确保您的网络搜索活动更加高效、安全和可扩展,即使在最具挑战性的网站上也是如此。