当前位置: 首页 > news >正文

多模态AI爬虫:文本+图像智能抓取实战

爬虫代理

一个AI模型训练任务引发的爬虫危机

上个月,公司AI组向我们数据组提出一个“看似简单”的需求:训练一个能识别商品种类的多模态模型,数据来源不限,但要求包含图像 + 商品文本 + 价格 + 折扣信息。初看似乎没问题,直到他们指明:

“先抓一批亚马逊上关键词为‘laptop’的商品吧,图片和描述要配套的,价格、库存、折扣最好也能标注。”

我心里一沉——亚马逊,图文混合,反爬一流,这可不是普通爬虫能搞定的活。


你以为的请求头伪装,根本不够

第一轮尝试,我们写了个基础版脚本,配了user-agent,伪装了headers,访问频率也控制得不错。

然而爬了几分钟后,页面直接跳转验证码,甚至被302重定向回首页。我们意识到:

  • IP频率检测非常敏感
  • navigator.webdriver** 检测等自动化识别也在阻挡**
  • 图片链接多为懒加载或动态构造

于是我们准备全面升级:使用代理IP + 用户模拟持久化 + 多模态解析的组合拳。


多模态AI爬虫的架构搭建与实战代码

我们拆解了需求,决定使用 requests + lxml + Pillow,结合爬虫代理IP服务,实现一个具备图像和文本提取能力的智能爬虫。

核心技术点:

  • 代理IP绕过限制(爬虫代理接入)
  • 模拟用户防反爬识别
  • 图片下载与保存
  • 结构化存储:根据关键词分目录保存JSON和图片

代码实现如下(关键词以 laptop 为例):

import requests
from lxml import html
import os
import json
from urllib.parse import quote
from PIL import Image
from io import BytesIO# 设置关键词
keyword = "laptop"
search_url = f"https://www.amazon.com/s?k={quote(keyword)}"# 设置爬虫代理(参考亿牛云爬虫加强版示例 www.16yun.cn)
proxies = {"http": "http://用户名:密码@代理域名:端口","https": "http://用户名:密码@代理域名:端口"
}# 自定义请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36","Accept-Language": "en-US,en;q=0.9","Cookie": "你的cookie字符串"  # 可通过浏览器调试获取登录后的cookie
}# 创建数据保存目录
os.makedirs(f"data/{keyword}/images", exist_ok=True)# 发送请求获取页面
response = requests.get(search_url, headers=headers, proxies=proxies, timeout=15)
tree = html.fromstring(response.content)# 解析商品列表(取前10个)
products = tree.xpath('//div[contains(@class,"s-result-item") and @data-asin]')
results = []for idx, product in enumerate(products[:10]):try:asin = product.get("data-asin")title = product.xpath('.//h2//span/text()')price_whole = product.xpath('.//span[@class="a-price-whole"]/text()')price_frac = product.xpath('.//span[@class="a-price-fraction"]/text()')img_url = product.xpath('.//img[@class="s-image"]/@src')# 构造完整价格price = f"{price_whole[0]}.{price_frac[0]}" if price_whole and price_frac else "N/A"# 构造商品描述title = title[0].strip() if title else "N/A"# 图片下载与保存if img_url:img_response = requests.get(img_url[0], headers=headers, proxies=proxies)img = Image.open(BytesIO(img_response.content))img_path = f"data/{keyword}/images/{asin}.jpg"img.save(img_path)else:img_path = "N/A"# 构造数据结构item = {"asin": asin,"title": title,"price": price,"image_path": img_path,"keyword": keyword}results.append(item)except Exception as e:print(f"商品索引 {idx} 解析失败:{e}")continue# 保存为JSON
with open(f"data/{keyword}/products.json", "w", encoding="utf-8") as f:json.dump(results, f, indent=2, ensure_ascii=False)print(f"关键词 [{keyword}] 商品信息采集完成,共采集到 {len(results)} 条。")

多模态爬虫不只是“图+文”的堆砌

这次任务结束后,我们做了复盘。爬虫不仅是“爬”,而是感知 + 策略 + 多模态融合的过程:

  1. 图像获取并不是保存URL,而是要稳定下载并落地保存,才能用于模型训练。
  2. 代理+用户模拟组合远胜单一伪装,尤其在亚马逊这种反爬成熟站点上。
  3. 信息归类存储为后续数据训练节省了大量准备时间。

这次经历也启发我们后续开发了一套自动化“关键词 → 多模态样本”生成工具,真正走上了AI时代下数据爬虫的新台阶。

相关文章:

  • opencv opencv_contrib vs2020 源码安装
  • 【2025】深度学习环境搭建记录
  • Spring Boot Actuator 健康信息
  • C++学习-入门到精通【19】杂项汇总
  • 强化学习:DQN学习总结
  • 【完整源码+数据集+部署教程】太阳能板灰尘检测系统源码和数据集:改进yolo11-LVMB
  • Vue3+TypeScript实现迭代器模式
  • 基于多面体模型的编译优化技术
  • 代码训练LeetCode(32)Z字形变换
  • 浅谈MapReduce--基本操作
  • Vue开发学习笔记:动态渲染自定义封装的uview-plus的Toast组件
  • 大模型技术30讲-5-利用数据来减少过拟合现象
  • 上海市计算机学会竞赛平台2022年5月月赛丙组最远城市距离
  • 新零售视域下实体与虚拟店融合的技术逻辑与商业模式创新——基于开源AI智能名片与链动2+1模式的S2B2C生态构建
  • win11系统部署tomcat10教程
  • @SchedulerLock处理Spring Task在分布式环境下的重复执行问题
  • 2025 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第七届CCPC河南省大学生程序设计竞赛 Problem F. 幻形之路
  • 在rust中执行命令行输出中文乱码解决办法
  • Systemd 服务配置完整指南
  • 注册bean和自动配置的原理、过程
  • 百度做的网站字体侵权吗/一份完整的市场调查方案
  • 忽悠别人做商城网站/交换友情链接是什么意思
  • 长沙这边网站建设/seo培训费用
  • 日本网站制作公司/图片百度搜索
  • 福泉网站制作/游戏代理怎么找渠道
  • 域名备案成功如何做网站/电脑培训学校能学什么