You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

爬取亚马逊页面商品标题与图片URL的Python脚本用了哪些库?请解析代码

爬取亚马逊商品标题和图片URL的Python库及代码解析

核心依赖库

爬这类静态页面,常用的几个库如下:

  • requests:负责向亚马逊服务器发送HTTP请求,获取目标页面的HTML源码,是Python爬虫最基础的请求工具。
  • BeautifulSoup4:用来解析HTML文本,通过标签、id、class等定位我们需要的元素,上手门槛低,适合新手处理静态页面。
  • fake_useragent(可选但强烈推荐):生成随机的User-Agent字符串,模拟不同浏览器的请求,避开亚马逊基础的反爬拦截。

示例爬取脚本及详细解析

下面是一个可运行的典型脚本,针对亚马逊商品页面提取标题和主图URL:

from fake_useragent import UserAgent
import requests
from bs4 import BeautifulSoup
import time

# 替换为你要爬取的亚马逊商品链接
PRODUCT_URL = "https://www.amazon.com/dp/B0C1XKZ7Y6"

def scrape_amazon_product_details(url):
    # 生成随机请求头,伪装浏览器身份
    ua = UserAgent()
    headers = {
        "User-Agent": ua.random,
        "Accept-Language": "en-US,en;q=0.9"
    }

    try:
        # 发送GET请求,添加短间隔避免触发反爬
        time.sleep(2)
        response = requests.get(url, headers=headers)
        # 检查请求是否成功(比如403、500这类错误会直接抛出异常)
        response.raise_for_status()

        # 初始化HTML解析器
        soup = BeautifulSoup(response.text, "html.parser")

        # 提取商品标题:亚马逊商品标题的id通常是productTitle
        product_title = soup.find(id="productTitle").get_text(strip=True)

        # 提取主图URL:主图元素的id一般是landingImage,取src属性
        main_image_url = soup.find(id="landingImage")["src"]

        return {
            "title": product_title,
            "main_image_url": main_image_url
        }
    except Exception as e:
        print(f"爬取失败: {str(e)}")
        return None

# 执行爬取并输出结果
if __name__ == "__main__":
    result = scrape_amazon_product_details(PRODUCT_URL)
    if result:
        print(f"商品标题: {result['title']}")
        print(f"主图URL: {result['main_image_url']}")

逐行解析

  1. 库导入:

    • from fake_useragent import UserAgent:导入生成随机UA的工具,用来绕过亚马逊的UA检测。
    • import requests:导入请求库,负责和亚马逊服务器建立连接并获取页面内容。
    • from bs4 import BeautifulSoup:导入HTML解析器,用来从杂乱的HTML里精准提取目标内容。
    • import time:用来添加请求间隔,降低被封IP的风险。
  2. 常量定义:

    • PRODUCT_URL:替换成你要爬的具体商品页面链接,这里用的是示例链接。
  3. 爬取函数逻辑:

    • 请求头构建:ua.random生成随机UA,Accept-Language设置为英文,模拟正常海外用户的请求,减少被拦截概率。
    • 请求发送:time.sleep(2)添加2秒间隔,避免短时间内多次请求触发反爬;requests.get()发送GET请求,response.raise_for_status()会在请求返回错误状态码时抛出异常,方便排查问题。
    • HTML解析:BeautifulSoup(response.text, "html.parser")把获取到的HTML文本交给解析器处理,html.parser是Python内置的解析器,不需要额外安装(如果追求速度可以用lxml,需要单独安装)。
    • 标题提取:soup.find(id="productTitle")通过元素的id定位标题容器,.get_text(strip=True)去除文本前后的空格、换行符,得到干净的标题内容。
    • 图片URL提取:soup.find(id="landingImage")["src"]定位主图元素,取其src属性值,就是图片的直接访问链接。
    • 异常处理:用try-except捕获请求失败、元素找不到等所有可能的错误,打印错误信息并返回None,避免程序直接崩溃。
  4. 主程序执行:

    • if __name__ == "__main__":确保只有直接运行脚本时才执行爬取逻辑。
    • 调用函数并输出结果:如果爬取成功,就打印标题和图片URL;失败则会输出错误信息。

关键注意事项

  • 亚马逊反爬严格:频繁请求会被封IP,建议增加请求间隔(比如3-5秒),或者使用代理IP池。
  • 页面结构可能变化:如果某天发现提取不到内容,要检查亚马逊页面的元素id/class是否更新了(可以用浏览器的开发者工具查看)。
  • 合规性:爬取前要查看亚马逊的robots.txt,不要用于商业用途,避免法律风险。

内容的提问来源于stack exchange,提问作者mashoodsheikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:57:38