下面是一个基于 Python 使用爬虫技术来抓取京东商品信息的详细教程,并包含实际案例和代码示例。爬虫工具主要使用 requests
发送请求,BeautifulSoup
解析 HTML,json
处理数据,并且结合京东商品页面的 AJAX 动态加载技术。
一、环境准备
在开始爬取京东商品信息之前,需要先安装相关依赖库。我们将使用以下 Python 库:
requests
: 用于发送 HTTP 请求BeautifulSoup
: 用于解析 HTML 文档pandas
: 数据处理与导出json
: 处理京东商品的 API 返回数据
pip install requests beautifulsoup4 pandas lxml
二、目标分析
我们以京东某个商品类别的商品列表为目标,比如搜索关键词“耳机”。通过分析发现京东的商品页面是通过 AJAX 请求加载商品数据的,因此我们可以直接抓取返回的 JSON 数据。
三、步骤详解
3.1 获取商品页面的 HTML 源代码
首先,我们构造一个搜索请求,访问京东商品列表页,并获取商品的 HTML 源代码。
代码示例:
import requests
# 设定请求的用户代理(User-Agent),模拟浏览器行为
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'
}
# 搜索关键词“耳机”的京东商品列表页 URL
url = 'https://search.jd.com/Search?keyword=耳机&enc=utf-8'
# 发送 GET 请求,获取页面 HTML 源代码
response = requests.get(url, headers=headers)
# 打印返回的状态码(200 表示成功)
print(response.status_code)
# 获取 HTML 内容
html_content = response.text
3.2 使用 BeautifulSoup 解析 HTML
解析 HTML 文档,提取商品的基本信息(如商品名称、价格、评论数等)。我们用 BeautifulSoup
来解析 HTML 文档。
代码示例:
from bs4 import BeautifulSoup
# 使用 BeautifulSoup 解析 HTML
soup = BeautifulSoup(html_content, 'lxml')
# 获取商品列表的 HTML 部分
goods_list = soup.find_all('li', class_='gl-item')
# 提取每个商品的名称、价格、评价数等信息
for item in goods_list:
# 商品名称
name = item.fi