利用Python爬取京东任意商品数据

今天给大家展示爬取京东商品数据

首先呢还是要分思路的,我分为以下几个步骤:

第一步:得到搜索指定商的url
第二步:获得搜索商品列表信息
第三步:对得到的商品数据进行分析筛选
第四步:保存筛选后的数据

第一步:

进入京东官网后,比如搜索手机,F12打开开发者工具,进行抓包,发现以下是我们所需要的:

也就是

https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&wq=%E6%89%8B%E6%9C%BA&pvid=4c5cff7150a848e4a75ca16372e953ad

很显然,其中一些参数去掉也无妨,那就测试一下,发现如果是只剩下

https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA

时,得到的搜索结果并不是手机而是乱码,所以必须吧enc=utf-8给加上,其实这个就是编码格式问题,最终的精简url为

https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8

keyword中就是“手机”这个字符经过utf-8编码后的字符,那么第一步就结束了

第二步:

这一步就是要获取众多商品列表了,通过审查元素即可得到商品列表是在这:


既然知道数据在哪,那么我就用xpath(正则、bs4都可以哟)来进行获取,代码如下:

shangpin_list = res.xpath('//ul[@class="gl-warp clearfix"]/li')

第三步:

既然得到了列表,那么我们就要对数据进行筛选,首先我们先获得商品标题吧,发现其商品标题在下面这个位置(以后有钱了我也要买个T.T):

我们可以用xpath进行筛选出来,代码如下:

name = message.xpath('div[@class="gl-i-wrap"]/div[@class="p-name p-name-type-2"]/a/em/text()')

即可得到本页面所有关于搜索“手机”关键字的商品标题,同样的方法,也可以找到商品价格、店铺名称、链接等,代码如下:

价格:

price = message.xpath('div[@class="gl-i-wrap"]/div[@class="p-price"]/strong/i/text()')

店铺名称:

shopname = message.xpath('div[@class="gl-i-wrap"]/div[@class="p-shop"]/span/a/@title')

注意:在爬取店铺信息时会出现以下情况:

这是爬虫失误了么,其实并不是,仔细对比发现这些值为空的都是京东官方旗舰店的店铺,所以在这里需要自己手动加个判断哟

商品链接:

href = message.xpath('div[@class="gl-i-wrap"]/div[@class="p-name p-name-type-2"]/a/@href')

将这些数据我为了方便就将其存入一个字典,方便存储嘛哈哈,那么第三步就完成了。

第四步:

到了最后的存储环节了是不是贼激动,这里我用with对数据进行存储,代码如下:

def save_message(message_dict):for message in message_dict:with open("D:\英雄时刻\{name}.txt".format(name="京东商品"),"a",encoding="utf-8") as f:f.write("价格:"+message["price"]+"  链接:"+message["href"]+"  店铺名称:"+message["shopname"]+"  商品标题:"+message["name"]+"\n")

那么爬取京东商品数据到这就完毕了,当然,在此基础上还可以用for循环进行指定商品关键字下的多个页面的数据收集,最好带上代理IP哟。

该总结仅用于交流研究使用,请勿用于违法行为哟,不然会被进场叔叔请去喝茶的,哈哈,最后还是老样子,上完整代码:

import requests
from lxml import html
from urllib.parse import quote #编码转换函数def change_name(name):#编码转换cname = quote(name,encoding="utf-8")return cname#手机经过utf-8编码为:%E6%89%8B%E6%9C%BA
def get_allmessage(names):#cname = change_name(names)url = "https://search.jd.com/Search?keyword="+cname+"&enc=utf-8"header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}response = requests.get(url,headers=header)response.encoding = "utf-8"res = html.fromstring(response.text)shangpin_list = res.xpath('//ul[@class="gl-warp clearfix"]/li')print(len(shangpin_list))get_message(shangpin_list)def get_message(shangpin_list):#数据筛选message_dict = []for message in shangpin_list:name = message.xpath('div[@class="gl-i-wrap"]/div[@class="p-name p-name-type-2"]/a/em/text()')#print(name[0])price = message.xpath('div[@class="gl-i-wrap"]/div[@class="p-price"]/strong/i/text()')if price == []:price = ["预约中"]#print(price[0])shopname = message.xpath('div[@class="gl-i-wrap"]/div[@class="p-shop"]/span/a/@title')#print(shopname[0])href = message.xpath('div[@class="gl-i-wrap"]/div[@class="p-name p-name-type-2"]/a/@href')#print(href[0])if shopname == []:message_dict.append({"name":name[0],"price":price[0],"shopname":'京东官方旗舰店',"href":href[0]})else:message_dict.append({"name": name[0],"price": price[0],"shopname": shopname[0],"href": "https:"+href[0]})save_message(message_dict)def save_message(message_dict):#数据的存储for message in message_dict:with open("D:\英雄时刻\{name}.txt".format(name="京东商品"),"a",encoding="utf-8") as f:f.write("价格:"+message["price"]+"  链接:"+message["href"]+"  店铺名称:"+message["shopname"]+"  商品标题:"+message["name"]+"\n")if __name__ == "__main__":name = input("请输入商品名称:")get_allmessage(name)

Python爬取京东任意商品数据实战总结相关推荐

  1. Python爬虫教程:Python爬取京东商城商品大图详解

    Python爬取京东商城商品大图详解 做为一个爬虫初学者,在做爬取网址图片的练习中以京东网为例爬取商品大图并保存在相应的文件夹 1.导入模块 import urllib.request import ...

  2. 爬取电商平台数据,python爬取某维商品数据

    本次内容: 爬取电商平台数据,python爬取某维商品数据 课程亮点 动态数据抓包演示 json数据解析 requests模块的使用 保存csv 环境介绍 python 3.8 [最好用和老师一样的版 ...

  3. python爬取京东网页商品实例(一)

    # Copyright (c)2018, 东北大学软件学院学生 # All rightsreserved # 文件名称:justForTest.py # 作 者:孔云 #问题描述:打开京东页面,选取一 ...

  4. 看看最近京东哪些产品最火,Python爬取京东的商品排行

    确立需求目标 之所以写爬虫,肯定是有需求才会写,不然就没啥意义了.我们今天这个爬虫主要的任务就是,输入一个关键字,然后将京东返回的商品结果按一定的条件取得前十的商品名称和价格.知道了要干什么,就开始上 ...

  5. python爬取京东商品价格走势,python爬取京东店铺商品价格数据(已过期)

    # -*- coding:utf-8 -*- import requests import re import random import time import json from requests ...

  6. Python爬取淘宝商品数据,价值千元的爬虫外包项目

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 完整代码可以点击下方链 ...

  7. python爬取电影和美食数据实战

    本文使用的是requests+正则来匹配网页内容,对于数据量较多的采用了多线程抓取的方法,共3个案例,分别是抓取猫眼电影TOP100榜单和淘票票正在热映的电影信息.以及美团的美食数据.这几个案例采用的 ...

  8. Python爬取京东商品评论数据

    一.前言 本文将承接笔者的上篇文章Python爬取京东商品数据,使用京东商品唯一id字段"sku"拼接url,得到真实的京东商品评论网址,进而解释数据并保存到文件中,所爬取到的数据 ...

  9. python爬取京东商品数据要先登录_手把手教你用python 爬取京东评论

    本次python实战,主要目标是利用 Python爬取京东商品评论数,如上图所示:爬取"Python之父"推荐的小蓝书,这些信息主要包括用户名.书名.评论等信息. 爬取的网址url ...

最新文章

  1. python公共基础知识整理_python基础知识整理——字符串
  2. 鸡蛋该放在哪些篮子里?多少合适?
  3. 人工智能——命题逻辑与谓词逻辑
  4. 3.5 softmat从零开始_实现
  5. android 仿人人网滑动侧边栏
  6. 《机器学习概论》习题答案
  7. 如何在 C# 8 中使用 Index 和 Range
  8. HTML5新增的客户端校验
  9. tomcat之一:指定tomcat运行时JDK版本
  10. 又找到一个免费的ASP.net2.0免费空间,支持MS Sql Server Express2005 及Ftp
  11. ad18 bell封装_Altium 中异形焊盘异形封装的创建图文教程
  12. HikariCP 创建连接
  13. Linux下3种常用的网络测速工具简介
  14. c语言实现十进制转换其他进制的代码
  15. 1500个字给你讲透什么是分账系统
  16. 如何快速为视频添加ai字幕的解决方案
  17. 2021赤峰二中高考成绩查询,2021年赤峰高考状元名单公布,赤峰文理科状元是谁多少分...
  18. python游戏制作rpg_用 Python 语言来写游戏
  19. 智能除味器——外壳结构部分设计(3D打印)
  20. 从0到1构建大促运营活动

热门文章

  1. 生成PDF文件方案--学习中
  2. android 微信 去广告插件,Xposed去除微信朋友圈广告
  3. 抽奖机(用除法)1.0-python
  4. 元宇宙”成时下热点 中国古人是如何认识“宇宙”的?
  5. 最方便的ICON、PNG转换工具
  6. 软件测试二分查找函数,二分查找
  7. 键盘+moveit+rviz 控制六轴机械臂(仿真)
  8. js 将一大段时间均分为很多个小时间段
  9. 如何使用百度天气预报API接口
  10. 【PR 基础】PR界面简介