Python爬取【京东商城】商品信息实例(末尾有关于价格的爬取)

本文以Python爬虫为例,详细讲解如何爬取京东商城中‘笔记本电脑’类别的商品价格。由于京东价格信息是通过js动态加载,需要解析json数据。首先展示基础爬取代码,然后介绍如何存储价格信息,并提供了一个使用selenium解决动态页面的示例,尽管这种方法速度较慢。
摘要由CSDN通过智能技术生成

以爬取商品类别——‘笔记本电脑’为例

代码如下:

import requests
from lxml.html import etree

headers = {
   
    'authority': 'search.jd.com',
    'accept': '*/*',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
    'x-requested-with': 'XMLHttpRequest',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'cors',
    'sec-fetch-dest': 'empty',
    'referer': 'https://search.jd.com/Search?keyword=%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91&suggest=1.his.0.0&wq=%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91&page=1&s=1&click=1',
    'accept-language': 'zh-CN,zh;q=0.9',
    }

real_url = 'https://search.jd.com/Search?keyword=%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91&enc=utf-8&suggest=1.def.0.V16--38s0&wq=bijiben&pvid=429ef81bb06b479cb77db61d856d2816'
# 获取笔记本电脑商品总页数
def total_numpage():
	response = requests.get(real_url, headers=headers)  # 获取数据
	res_html = etree.HTML(response.text)  # 解析数据
	total_page = res_html.xpath('.//span[@class="fp-text"]/i/text()')[0].strip()
	return total_page

#逐页获取商品信息
for i in range(1,int(total_numpage())*2+1):
	#根据参数获取数据
	params = {
   
		'keyword':'\u7B14\u8BB0\u672C\u7535\u8111',
		'suggest': '1.his.0.0',
		'wq': '\u7B14\u8BB0\u672C\u7535\u8111',
		'page': str(i),
		's': str(1+(i-1)*25),
		'scrolling':'y',
		'log_id':'1594020048898.3534',
		'tpl':'1_M',
		'isList':'0'
	}

	response = requests.get(real_url, headers=headers, params=params) #获取数据
	res_html = etree.HTML(response.text) #解析数据
	goods_list_items = res_html.xpath('//li[@class="gl-item"]')
	num_goods = len(goods_list_items)
	if num_goods == '0':
		print('第{}页,这页总共{}件商品'.format(i,num_goods))
		print('None')
	else:
		print('第{}页,这页总共{}件商品'.format(i, num_goods))
		x = 0
		for goods_list_item in goods_list_items:
			x = x + 1
			good_name1 = goods_list_item.xpath('div[@class="gl-i-wrap"]/div[@class="p-name p-name-type-2"]/a/em/text()')[0].strip()
			try:
				good_name2 = goods_list_item.xpath('div[@class="gl-i-wrap"]/div[@class="p-name p-name-type-2"]/a/em/font/text()')[0]
			except IndexError:
				good_name2 = ''
			try:
				good_name3 = goods_list_item.xpath('div[@class="gl-i-wrap"]/div[@class="p-name p-name-type-2"]/a/em/text()')[1].strip()
			except IndexError:
				good_name3 = ''
			good_name = good_name1 + good_name2 + good_name3
			good_id = goods_list_item.xpath('@data-sku')[0]
			list = [good_name, good_id]
			print(x, list)
		print('\n')

代码打印结果:

1,这页总共30件商品
1 ['荣耀笔记本电脑MagicBook 14 14英寸全面屏轻薄本(AMD锐龙5 16G 512G 多屏协同 指纹Win10)银', '100010816812']
2 ['华为(HUAWEI) MateBook D 14英寸全面屏轻薄笔记本电脑便携超级快充(AMD锐龙5 3500U 16+512GB)银', '100010879626']
3 ['联想(Lenovo)小新Air14 2020性能版 英特尔酷睿i5 全面屏独显轻薄笔记本电脑(i5 16G 512G MX350 100%sRGB)银', '100011386554']
4 ['戴尔DELL灵越5000 14英寸酷睿i5网课学习轻薄笔记本电脑(十代i5-1035G1 8G 512G MX230 2G独显)银', '100006546527']
5 ['联想(Lenovo)IdeaPad14s 2020 英特尔酷睿i3 14英寸网课办公窄边轻薄笔记本电脑(十代i3 8G 512G固态 FHD)银', '100013431578']
6 ['联想(Lenovo)威6 2020款 英特尔酷睿 i5 14英寸窄边框轻薄笔记本电脑(i5-1035G1 8G 512G PCIE 2G独显 FHD 全功能Type-C )相思灰', '100010370676']
7 ['联想(Lenovo)小新Air14 2020锐龙版 全面屏办公轻薄笔记本电脑(6核R5-4600U 16G 512G 100%sRGB高色域)深空灰', '100007218425']
8 ['联想(Lenovo)小新Pro13 2020 锐龙版 全面屏性能超轻薄笔记本电脑(6核R5-4600U 16G 512G 2.5K屏 高色域)灰', '100013291032']
9 ['联想(Lenovo)小新Pro13 2020锐龙版 全面屏高性能超轻薄笔记本电脑(8核R7-4800U 16G 512G 2.5K屏 高色域 )灰', '100007250507']
10 ['联想(Lenovo)小新15 2020英特尔酷睿i5 15.6英寸全面屏独显轻薄笔记本电脑(十代i5 16G 512G MX350高色域 )银', '100011773090']
11 ['戴尔DELL游匣G3 15.6英寸英特尔酷睿i5游戏笔记本电脑(九代i5-9300H 8G 512G GTX1650 72%NTSC)', '100005724680']
12 ['联想(Lenovo)小新Pro13锐龙版 性能网课办公轻薄笔记本电脑(标压R5-3550H 16G 512G 人脸识别 100%sRGB)银', '100005171461']
13 ['华为(HUAWEI) MateBook D 15.6英寸全面屏轻薄笔记本电脑便携超级快充(AMD R5 3500U 16G+512GB Office)银', '100013291000']
14 ['RedmiBook 14 增强版 全金属超轻薄(第十代英特尔酷睿i5-10210U 8G 512G SSD MX250 2G独显 支持手环疾速解锁)游戏 银 手提笔记本电脑小米 红米', '100004508927']
15 ['15.6英寸 超簿本 轻薄本笔记本电脑轻薄 超级本 学生网上课堂', '64488009826']
16 ['联想(Lenovo)小新Pro13 2020性能版 英特尔酷睿i5 全面屏独显轻薄笔记本电脑(i5 16G 512G MX350高色域)银', '100006487373']
17 ['联想ThinkPad E495(0BCD)14英寸轻薄笔记本电脑(锐龙5-3500U 8G 512GSSD FHD Win10)黑色', '100011213626']
18 ['荣耀笔记本电脑MagicBook 15 15.6英寸全面屏轻薄本 (锐龙R5 16G 512G 多屏协同 指纹识别 Win10)银', '100006008837']
19 ['华硕(ASUS) VivoBook15s 英特尔酷睿i5 新版15.6英寸轻薄笔记本电脑(i5-1035G1 8G 512GSSD MX330 2G独显)银', '100007161973']
20 ['联想(Lenovo)小新15 2020锐龙版 全面屏办公轻薄笔记本电脑(6核R5-4600U 16G 512G 100%sRGB 高色域)银', '100013023568']
21 ['联想(Lenovo)拯救者R7000 15.6英寸游戏笔记本电脑(R5-4600H 16G 512G SSD GTX1650 100%sRGB)幻影黑', '100012885246']
22 ['联想(Lenovo)拯救者Y7000 15.6英寸游戏笔记本电脑(i5-10300H 16G 512G SSD GTX1650 100%sRGB)幻影黑', '100007045421']
23 ['惠普(HP)星14 青春版 14英寸轻薄窄边框笔记本电脑(R5-3500U 8G 256GSSD FHD IPS)银', '100010409532']
24 ['华为(HUAWEI)MateBook 13 2020款全面屏轻薄性能笔记本电脑十代酷睿(i5 16G 512G MX250 触控屏 多屏协同)银', '100011177202']
25 ['联想ThinkBook 14英特尔酷睿i5 14英寸轻薄笔记本电脑(十代酷睿i5 8G 512G傲腾增强型SSD 2G独显)', '100010370680']
26 ['荣耀MagicBook Pro 16.1英寸全面屏轻薄高性能笔记本电脑(标压锐龙5 16G 512G 100%sRGB Win10)银', '100004563443']
27 ['华硕(ASUS) 天选 15.6英寸游戏笔记本电脑(新锐龙 7nm 8核 R7-4800H 8G 512GSSD RTX2060 6G 144Hz)钛空灰', '100006460635']
28 ['华为HUAWEI MateBook 14 2020款全面屏轻薄笔记本电脑十代酷睿(i5 16G 512G MX350 触控屏 多屏协同)灰', '100012950506']
29 ['华硕(ASUS)破晓7 2020款 英特尔酷睿15.6英寸商务轻薄本笔记本电脑i5预装Office 银灰色 英特尔酷睿i5 16G 1T+256固态 2G独显', '28206239565']
30 ['华为HUAWEI MateBook 14 2020款全面屏轻薄性能笔记本电脑十代酷睿(i7 16G 512G MX350 触控屏 多屏协同)银', '100012950554']2,这页总共30件商品
1 ['荣耀MagicBook Pro 16.1英寸全面屏轻薄高性能笔记本电脑(标压锐龙5 16G 512G 100%sRGB Win10)银', '100004563443']
2 ['华硕(ASUS) 天选 15.6英寸游戏笔记本电脑(新锐龙 7nm 8核 R7-4800H 8G 512GSSD RTX2060 6G 144Hz)钛空灰', '100006460635']
3 ['华为HUAWEI MateBook 14 2020款全面屏轻薄笔记本电脑十代酷睿(i5 16G 512G MX350 触控屏 多屏协同)灰', '100012950506']
4 ['华硕(ASUS)破晓7 2020款 英特尔酷睿15.6英寸商务轻薄本笔记本电脑i5预装Office 银灰色 英特尔酷睿i5 16G 1T+256固态 2G独显', '28206239565']
5 ['华为HUAWEI MateBook 14 2020款全面屏轻薄性能笔记本电脑十代酷睿(i7 16G 512G MX350 触控屏 多屏协同)银', '100012950554']
6 ['华为(HUAWEI)MateBook D 14全面屏轻薄笔记本电脑多屏协同便携超级快充(i5-10210U 16G+512G 独显)银', '100006051933']
7 ['宏碁(Acer)墨舞EX215 15.6英寸轻薄大屏笔记本(四核N4120 4G 128GSSD 蓝光护盾 网课 办公 Win10)', '100012696986']
8 ['联想(Lenovo)IdeaPad14s 2020款 十代英特尔酷睿 14英寸 高性能轻薄笔记本电脑银色 i3-1005G1/8G/512G鼠标套装', '70073013324']
9 ['Apple 2020新款 MacBook Air 13.3 Retina屏 十代i3 8G 256G SSD 银色笔记本电脑轻薄本 MWTK2CH/A', '100006589419']
10 ['RedmiBook 16 锐龙版 超轻薄全面屏(6核R5-4500U 16G 512G 100% sRGB高色域)灰 手提笔记本电脑小米 红米', '100013171136']
11 ['惠普(HP)星14 青春版 14英寸轻薄窄边框笔记本电脑(R5-3500U 16G 512GSSD FHD IPS)银', '100006302835']
12 ['联想ThinkPad X395(0YCD)13.3英寸轻薄笔记本电脑(锐龙7 PRO 3700U 8G 512GSSD FHD 指纹识别 高色域)', '100007317132']
13 ['惠普(HP)暗影精灵5 15.6英寸 游戏笔记本电脑(i5-9300H 8G 512GSSD GTX1650 4G独显 72%高色域)', '100005603836']
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值