一、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 分钟)
- 打开 CMD,切换到代码文件所在目录(如文件在桌面,输入cd Desktop);
- 输入命令运行代码:python spider_ecommerce.py;
- 运行完成后,在代码同目录会出现「京东商品列表.csv」,用 Excel 打开即可看到所有商品的名称、价格、链接。
六、新手注意事项
- 合规爬取 :先查看网站「robots.txt」(如
https://www.jd.com/robots.txt
),不爬取禁止的内容,避免频繁请求(可加time.sleep(1)控制间隔,需导入 time 库);
- URL 替换:想爬其他分类(如电脑、家电),只需替换target_url,并重新确认商品卡片的 HTML 结构;
- User-Agent 失效:若爬取失败,重新在浏览器复制最新的 User-Agent 替换代码中的对应字段。
按照以上步骤,30 分钟内就能从 0 实现电商商品爬取!代码逻辑简单,新手跟着注释改改参数就能用,动手试试吧~