使用 LLaMA 3 进行网络抓取:将任何网站转化为结构化 JSON(2025 年指南)
与 LLaMA 3现在,我可以轻松地将杂乱无章的 HTML 转换成整齐、结构化的 JSON。这是一种更智能、更可靠的数据搜刮方式,能让整个过程更流畅、更不易出错。让我们深入了解一下它是如何工作的!
什么是 LLaMA 3?
LLaMA 3 代表 大型语言模型 元人工智能是 Meta 第三代开放式语言模型,于 2024 年 4 月发布。它是一个大型语言模型,支持从文本生成到自然语言理解的各种任务。LLaMA 3 模型有不同大小,从 80 亿参数 (8B) 至 4 050 亿参数 (405B).这些模型设计用于在各种硬件设置上高效运行,使许多开发人员和企业都能使用它们。
与依赖于预定义选择器的传统刮擦方法不同,LLaMA 3 能根据上下文理解内容。这意味着,即使网页布局发生变化或网站内容复杂、动态加载,它也能智能地从网页中提取信息。
为什么使用 LLaMA 3 进行网络抓取?
随着时间的推移,由于多种因素的影响,网络刮擦变得越来越复杂:
- 动态内容:现在,许多网站都使用 JavaScript 动态加载内容。这使得依赖静态 HTML 选择器的传统刮擦方法失效。
- 网站布局更改:网页设计经常更新,会破坏依赖于特定元素位置的刮擦脚本。
- 反机器人保护:许多网站都实施了反机器人措施,如验证码挑战、IP 屏蔽和基于 JavaScript 的保护措施,这使得在不被屏蔽的情况下刮取数据变得更加困难。
传统的刮擦方法(如使用 XPath 或 CSS 选择器)非常脆弱,因为当网站布局发生变化时,这些方法就会失效。然而,LLaMA 3 提供了一种处理这些难题的新方法。它可以根据上下文来解析内容,从而降低了因网站布局的微小变化而中断的可能性。
使用 LLaMA 3 进行网络刮擦的一些好处包括
- 灵活性:LLaMA 3 可适应不同的网站结构,因此非常适合搜索动态和经常变化的网站。
- 效率:通过将原始 HTML 转换为 JSON 格式的简洁结构化数据,LLaMA 3 可以更轻松地存储和处理刮擦信息。
- 可靠性:该模型对内容的上下文理解可确保只提取相关数据,从而降低出错风险。
利用 Bright Data 的 MCP 提升网络抓取能力
为了获得更可靠的最新结果,请考虑将 Bright Data 的模型上下文协议 (MCP) 与您的 LLaMA 3 设置集成。MCP 可提供实时网络访问,绕过地理限制和僵尸保护,并确保您的模型处理最新数据。它在扫描动态或受保护的网站时尤其有用--使您的管道更强大、更准确,而无需额外的复杂性。
注:我与 Bright Data 无关。
为 LLaMA 3 设置环境
在进入刮擦流程之前,您需要具备一些先决条件:
- Python 3:确保您的系统已安装 Python 3。本指南假定您具备基本的 Python 知识。
- 操作系统兼容性:LLaMA 3 适用于 macOS(Big Sur 或更高版本)、Linux 和 Windows(10 或更高版本)。
- 硬件资源:根据所选模型的大小,您需要足够的内存和磁盘空间。例如,带有 80 亿个参数的 LLaMA 3.1 需要大约 6-8 GB 的内存和 4.9 GB 的磁盘空间。
环境就绪后,您需要安装 奥拉玛是一个用于下载、设置和本地运行 LLaMA 模型的工具。
安装Ollama
Ollama 简化了下载和设置 LLaMA 3 模型的过程。开始使用
- 访问 奥拉玛官方网站 并下载与您的操作系统兼容的应用程序。
- 请按照网站上提供的安装说明进行操作。
安装 Ollama 后,您需要根据自己的硬件和使用情况选择合适的型号。对于大多数用户来说 llama3.1:8b 这种模式非常理想,因为它在性能和资源需求之间实现了良好的平衡。
在本地运行 LLaMA 3
安装好 Ollama 后,您可以按照以下步骤开始使用 LLaMA 3:
- 下载模型:打开终端,运行以下命令下载 LLaMA 3.1 模型:
ollama run llama3.1:8b
该命令将下载模型并启动一个交互式提示符,在该提示符下,您可以通过发送类似查询来测试模型:
>>> 你是谁?
我是 LLaMA,由 Meta AI 开发的人工智能助手...
- 启动 Ollama 服务器:要作为本地服务器运行 LLaMA 模型,请使用以下命令:
服务
这将在 http://127.0.0.1:11434/, 您可以通过浏览器访问它来验证服务器是否正在运行。
使用 LLaMA 3 构建网络抓取器
现在,LLaMA 3 已经安装并开始运行,让我们来看看如何构建一个简单的网络搜索器,从亚马逊等电子商务网站上提取产品信息。
刮板将遵循多阶段工作流程:
- 浏览器自动化:使用 Selenium 加载页面并渲染动态内容。
- HTML 提取:识别网页上的产品详细容器。
- Markdown 转换:将 HTML 内容转换为 Markdown,以便 LLaMA 进行更好的处理。
- 使用 LLaMA 提取数据:使用 LLaMA 提取结构化数据并将其转换为 JSON 格式。
- 输出处理:将提取的数据保存为 JSON 文件,以便进一步分析。
第 1 步:安装所需程序库
要开始使用,请安装必要的 Python 库:
pip install requests selenium webdriver-manager markdownify
- requests:允许向 LLaMA 模型发送 HTTP 请求。
- selenium:自动进行浏览器交互,这对有动态内容的网站特别有用。
- webdriver 管理器:帮助管理 Selenium 所需的 ChromeDriver 的正确版本。
- markdownify:将 HTML 内容转换为 Markdown 格式,便于 LLaMA 处理。
第 2 步:设置 Selenium WebDriver
接下来,您需要使用 Selenium.这样,您就可以在不打开可视化浏览器的情况下,以编程方式与网站进行交互。
下面介绍如何通过以下方法初始化无头浏览器 Chrome:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
options = Options()
options.add_argument(" - headless")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
第 3 步:从亚马逊产品页面提取 HTML 代码
现在,您需要提取产品页面的 HTML 内容。亚马逊产品页面在一个容器中包含产品信息,您可以使用 Selenium 访问该容器:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import 预期条件 as EC
wait = WebDriverWait(driver、 15)
product_container = wait.until(EC.presence_of_element_located((By.ID、 "ppd")))
page_html = product_container.get_attribute("outerHTML"(外部HTML)
第 4 步:将 HTML 转换为 Markdown
将提取的 HTML 转换为 Markdown,以优化 LLaMA 的处理。Markdown 是一种更简洁、更高效的格式,可用于处理大型语言模型。
from markdownify import markdownify as md
clean_text = md(page_html, heading_style="ATX")
步骤 5:创建结构化数据提取提示
使用 LLaMA 3 成功进行刮擦的关键在于制作正确的提示。提示指示 LLaMA 从提供的内容中提取哪些数据。
下面是提取产品详细信息的提示示例:
提示 = (
"您是亚马逊产品数据提取专家。您的任务是从提供的内容中提取产品数据。"
"只返回有效的 JSON 文件,并完全包含以下字段和格式:nn"
"{n"
' "title": "字符串 - 产品标题",n'
' "price"编号 - 当前价格(仅数值)",n'
' "原价":数字或空 - 原价(如有)、n'
' "折扣":数字或空--折扣百分比(如果有)、n'
' "等级":数字或空--平均评分(0-5 分)、n'
' "审查次数":数量或空--评论总数、n'
' "描述": "string - 主要产品描述",n'
' "特征": ["string"]- 列出要点功能、n'
' "可用性": "string - 库存状况",n'
' "asin": "string - 10-性状 亚马逊 身份证"n'
"}nn"
"返回 只有 的 JSON 不带 任何 附加文本。"
)
第 6 步:调用 LLaMA 应用程序接口
准备好 Markdown 内容后,将其发送到 LLaMA API 以提取结构化数据。您将使用以下 Python 代码发送请求:
import requests
import json
response = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "llama3.1:8b",
"提示": f"{PROMPT}(提示nn{清洁文本}",
"流": False,
"格式": "json",
"选项": {
"温度": 0.1,
"num_ctx": 12000,
},
},
timeout=250,
)
raw_output = response.json()["响应"].strip()
product_data = json.loads(raw_output)
步骤 7:保存结果
最后,将提取的产品数据保存到 JSON 文件中:
with open("product_data.json", "w", encoding="utf-8") as f:
json.dump(product_data, f, indent=2, ensure_ascii=False)
结论
使用 LLaMA 3 进行网络刮擦可改变游戏规则。与传统的刮擦方法相比,它能让你更高效、更可靠地从网站中提取数据。您可以通过将原始 HTML 转换为结构化 JSON 来存储和处理数据。无论是从亚马逊等电子商务网站抓取产品详细信息,还是从其他复杂网站提取数据,LLaMA 3 都能提供灵活而强大的解决方案,简化网络抓取工作并提高其弹性。