从 0 到 1 学 Python 爬虫:30 分钟爬取电商商品列表(附完整代码 + 注释)

一、30 分钟爬取逻辑

核心流程:环境搭建(5 分钟)→ 页面分析(5 分钟)→ 代码编写(15 分钟)→ 调试保存(5 分钟) ,选用「京东分类页」作示例(合规爬取,不涉及敏感数据),用新手友好的库实现。

二、第一步:环境准备(5 分钟)

1. 安装 Python

Python官网下载 3.8 + 版本,安装时勾选「Add Python to PATH」,避免后续路径问题。

2. 安装必备库

打开「命令提示符(CMD)」,输入 2 行命令安装 2 个核心库:

bash 复制代码
# 用于发送HTTP请求,获取网页数据
pip install requests
# 用于解析HTML页面,提取商品信息
pip install beautifulsoup4 lxml
  • lxml 是解析器,BeautifulSoup 依赖它工作。

三、第二步:目标页面分析(5 分钟)

以「京东手机分类页」(URL:https://list.jd.com/list.html?cat=9987,653,655 为例,分析商品信息的 HTML 结构:

商品卡片:<div class="gl-i-wrap"></div>(所有商品都在这个标签里)

商品名称:<h3 class="gl-item-title"><a>...</a></h3>(a 标签内的文本)

商品价格:<div class="p-price"><strong><i>...</i></strong></div>(i 标签内的文本)

商品链接:<a href="..."(a 标签的 href 属性,需补 "https:" 前缀)

记下这些「标签 + 类名」,后续代码要用来提取数据。

四、第三步:核心代码实现(15 分钟)

1. 完整代码(带逐行注释)

新建文本文件,改后缀为spider_ecommerce.py,复制以下代码:

python 复制代码
# 1. 导入需要的库
import requests  # 发送HTTP请求
from bs4 import BeautifulSoup  # 解析HTML
import csv  # 保存数据到CSV文件
# 2. 配置爬取参数(新手可直接用,也可替换成其他分类URL)
target_url = "https://list.jd.com/list.html?cat=9987,653,655"  # 京东手机分类页
# headers:伪装成浏览器(否则网站可能拒绝请求)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    # 提示:替换成自己的User-Agent!获取方式:浏览器F12→网络→任意请求→请求头→复制User-Agent
}
# 3. 发送请求,获取网页数据
try:
    response = requests.get(url=target_url, headers=headers)  # 发送GET请求
    response.raise_for_status()  # 若状态码≠200(请求失败),直接抛异常
    response.encoding = "utf-8"  # 设置编码,避免中文乱码
    print("✅ 网页请求成功,开始解析数据!")
except requests.exceptions.RequestException as e:
    print(f"❌ 网页请求失败:{e}")
    exit()  # 请求失败则退出程序
# 4. 解析HTML,提取商品信息
soup = BeautifulSoup(response.text, "lxml")  # 创建解析对象
product_cards = soup.find_all("div", class_="gl-i-wrap")  # 找到所有商品卡片
# 5. 保存数据到CSV文件(方便后续查看/分析)
with open("京东商品列表.csv", "w", encoding="utf-8", newline="") as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(["商品名称", "商品价格", "商品链接"])  # 写入表头
    
    # 循环提取每个商品的信息
    for card in product_cards:
        try:
            # 提取商品名称(strip=True:去掉多余空格/换行)
            name = card.find("h3", class_="gl-item-title").a.get_text(strip=True)
            # 提取商品价格
            price = card.find("div", class_="p-price").strong.i.get_text()
            # 提取商品链接(补全"https:"前缀)
            link = "https:" + card.find("h3", class_="gl-item-title").a["href"]
            
            # 打印信息(可选,用于实时查看)
            print(f"\n商品:{name}\n价格:{price}\n链接:{link}")
            # 写入CSV
            csv_writer.writerow([name, price, link])
        except Exception as e:
            # 个别商品提取失败时,不中断程序,仅打印错误
            print(f"❌ 提取某商品失败:{e}")
            continue
print("\n🎉 爬取完成!数据已保存到「京东商品列表.csv」(和代码文件同目录)")

2. 关键代码说明

  • headers 伪装:网站会识别 "爬虫请求" 并拦截,加 User-Agent 能伪装成正常浏览器访问;
  • try-except 捕获异常:避免个别商品结构异常导致整个程序崩溃;
  • CSV 保存:比 TXT 更易后续分析(可用 Excel 打开),newline=""避免空行,encoding="utf-8"避免中文乱码。

五、第四步:运行代码 & 查看结果(5 分钟)

  1. 打开 CMD,切换到代码文件所在目录(如文件在桌面,输入cd Desktop);
  1. 输入命令运行代码:python spider_ecommerce.py;
  1. 运行完成后,在代码同目录会出现「京东商品列表.csv」,用 Excel 打开即可看到所有商品的名称、价格、链接。

六、新手注意事项

  1. 合规爬取 :先查看网站「robots.txt」(如https://www.jd.com/robots.txt),不爬取禁止的内容,避免频繁请求(可加time.sleep(1)控制间隔,需导入 time 库);
  1. URL 替换:想爬其他分类(如电脑、家电),只需替换target_url,并重新确认商品卡片的 HTML 结构;
  1. User-Agent 失效:若爬取失败,重新在浏览器复制最新的 User-Agent 替换代码中的对应字段。

按照以上步骤,30 分钟内就能从 0 实现电商商品爬取!代码逻辑简单,新手跟着注释改改参数就能用,动手试试吧~

相关推荐
程序员清风9 小时前
贝壳三面:RocketMQ和KAFKA的零拷贝有什么区别?
java·后端·面试
爱吃烤鸡翅的酸菜鱼10 小时前
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
后端·ubuntu·rabbitmq·java-rabbitmq
小蒜学长10 小时前
校园外卖点餐系统(代码+数据库+LW)
java·数据库·spring boot·后端
IT_陈寒11 小时前
SpringBoot 3.2 踩坑实录:这5个‘自动配置’的坑,让我加班到凌晨三点!
前端·人工智能·后端
绝无仅有11 小时前
系统面试设计架构的深度解析:方法论、宏观与微观分析
后端·面试·github
期待のcode11 小时前
SpringMVC的请求接收与结果响应
java·后端·spring·mvc
风象南11 小时前
SpringBoot 「热补丁加载器」:线上紧急 bug 临时修复方案
后端
Victor35611 小时前
Redis(43)Redis哨兵(Sentinel)是什么?
后端