欢迎光临
我们一直在努力

AI 智能爬虫实战

1 概述

构建基于 AI 大模型的智能爬虫。

AI 智能爬虫的主要优势在于自主获取数据和抗干扰性强。

传统的爬虫依赖固定的 CSS 选择器或 XPath 等,一旦网页改版,代码就会失效。而基于 AI 的爬虫则是让模型去“读”网页,像人一样找到目标数据在哪里,而不是依赖固定的数据获取和解析代码。同时可以让大模型动态自主决策爬取策略,而不用写一套固定的爬取策略脚本。

下面将从以下两种应用场景来阐述 AI 智能爬虫实战方案:

  • AI 爬虫-模型解析网页和提取目标数据
  • AI 爬虫智能体-模型自主决策爬取策略

2 AI 爬虫

2.1 需求

百度热搜 AI 爬虫:使用 python ,基于大模型实现一个 AI 爬虫,爬虫内容为:获取百度首页(即 https://www.baidu.com/)中“百度热搜”里的标题列表。

2.2 核心思路

  • 获取网页内容 (Fetch): 使用 requests 库获取 HTML(需伪装 User-Agent)。
  • 预处理 (Pre-process): 网页 HTML 极其庞大,直接扔给大模型会消耗大量 Token 且容易超长。我们需要用 BeautifulSoup 进行粗略清洗,只保留文本或大致的容器。
  • AI 提取 (AI Parse): 将清洗后的内容投喂给大模型(这里以 OpenAI 格式的 API 为例,你可以换成 DeepSeek、阿里通义等兼容 OpenAI 协议的模型),让它输出 JSON 格式的标题列表。

2.3 依赖

requests
beautifulsoup4
openai

2.4 实现

具体实现主要包括以下步骤:

  • 步骤 1:获取百度首页的 HTML
  • 步骤 2:清洗 HTML (为了减少 Token 消耗)
  • 步骤 3:调用 AI 大模型从 HTML 中提取数据

2.4.1 代码实现

代码实现如下所示。

import json
import os

import requests
from bs4 import BeautifulSoup
from openai import OpenAI

# — 配置区域 —
# 这里以 OpenAI 官方 API 为例,你也可以换成 DeepSeek / 通义千问 / kimi 的 API Key 和 Base URL
# API_KEY = \”your-api-key-here\”
# BASE_URL = \”https://api.openai.com/v1\” # 如果用别的模型,修改这里
# MODEL_NAME = \”gpt-4o-mini\” # 或者是 deepseek-chat, qwen-turbo 等

# 读取环境变量中配置的模型信息
BASE_URL = os.getenv(\”BASE_URL\”)
API_KEY = os.getenv(\”API_KEY\”)
MODEL_NAME = os.getenv(\”MODEL_NAME\”)

def fetch_baidu_html():
\”\”\”
步骤 1: 获取百度首页的 HTML
\”\”\”
url = \”https://www.baidu.com/\”
# 必须添加 Header 伪装成浏览器,否则百度会拦截
headers = {
\”User-Agent\”: \”Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\”,
\”Accept\”: \”text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\”
}

try:
response = requests.get(url, headers=headers, timeout=10)
response.encoding = \’utf-8\’ # 确保中文不乱码
if response.status_code == 200:
return response.text
else:
print(f\”请求失败,状态码: {response.status_code}\”)
return None
except Exception as e:
print(f\”发生错误: {e}\”)
return None

de

赞(0)
未经允许不得转载:171主机测评 » AI 智能爬虫实战
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址