Python爬虫实战之爬取京东商品数据并实实现数据可视化


Posted in Python onJune 07, 2021

一、开发工具

Python版本:3.6.4

相关模块:

DecryptLogin模块;

argparse模块;

以及一些python自带的模块。

二、环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

三、原理简介

原理其实挺简单的,首先,我们利用之前开源的DecryptLogin库来实现一下微博的模拟登录操作:

'''模拟登录京东'''
@staticmethod
def login():
    lg = login.Login()
    infos_return, session = lg.jingdong()
    return session

然后写几行简单的代码来保存一下登录后的会话,省得每次运行程序都要先模拟登录京东:

if os.path.isfile('session.pkl'):
    print('[INFO]: 检测到已有会话文件session.pkl, 将直接导入该文件...')
    self.session = pickle.load(open('session.pkl', 'rb'))
    self.session.headers.update({'Referer': ''})
else:
    self.session = JDGoodsCrawler.login()
    f = open('session.pkl', 'wb')
    pickle.dump(self.session, f)
    f.close()

接着去京东抓一波包,一样的套路,有种屡试不爽的感觉:

Python爬虫实战之爬取京东商品数据并实实现数据可视化

看看请求这个接口需要提交的参数:

Python爬虫实战之爬取京东商品数据并实实现数据可视化

我们可以简单分析一下每个参数的含义:

area: 不用管,可以看作一个固定值
enc: 指定编码, 可以看作固定值"utf-8"
keyword: 搜索的关键词
adType: 不用管,可以看作一个固定值
page: 当前的页码
ad_ids: 不用管,可以看作一个固定值
xtest: 不用管,可以看作一个固定值
_: 时间戳

也就是说我们需要提交的params的内容大概是这样子的:

params = {
            'area': '15',
            'enc': 'utf-8',
            'keyword': goods_name,
            'adType': '7',
            'page': str(page_count),
            'ad_ids': '291:19',
            'xtest': 'new_search',
            '_': str(int(time.time()*1000))
        }

构造好需要提交的params之后,只需要利用登录后的session去请求我们抓包得到的接口:

response = self.session.get(search_url, params=params)

然后从返回的数据里解析并提取我们需要的数据就可以啦:

response_json = response.json()
all_items = response_json.get('291', [])
for item in all_items:
    goods_infos_dict.update({len(goods_infos_dict)+1: 
                                {
                                    'image_url': item.get('image_url', ''),
                                    'price': item.get('pc_price', ''),
                                    'shop_name': item.get('shop_link', {}).get('shop_name', ''),
                                    'num_comments': item.get('comment_num', ''),
                                    'link_url': item.get('link_url', ''),
                                    'color': item.get('color', ''),
                                    'title': item.get('ad_title', ''),
                                    'self_run': item.get('self_run', ''),
                                    'good_rate': item.get('good_rate', '')
                                }
                            })

四、数据可视化

老规矩,可视化一波我们爬取到的数据呗。以我们爬取到的无人机商品数据为例。首先,我们来看看京东里卖无人机的自营店和非自营店比例吧:

Python爬虫实战之爬取京东商品数据并实实现数据可视化

咦,竟然是非自营店占多。我一直以为京东基本都是自营店,虽然我基本不用京东。真是个天大的误解T_T。

接着,我们再来看看京东自己给的商品排名前10的那几家店的商品评论数量呗:

Python爬虫实战之爬取京东商品数据并实实现数据可视化

对比一下评论最多的店铺:

Python爬虫实战之爬取京东商品数据并实实现数据可视化

看来评论数量和京东给的商品排名并没有直接联系T_T,竟然没有一家店是重复的。

再来看看无人机相关商品的价格分布呗:

Python爬虫实战之爬取京东商品数据并实实现数据可视化

到此这篇关于Python爬虫实战之爬取京东商品数据并实实现数据可视化的文章就介绍到这了,更多相关Python可视化京东商品数据 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 中的 else详解
Apr 23 Python
python访问抓取网页常用命令总结
Apr 11 Python
python机器学习之神经网络(二)
Dec 20 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 Python
Python生态圈图像格式转换问题(推荐)
Dec 02 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
python制作抽奖程序代码详解
Jan 15 Python
Python matplotlib多个子图绘制整合
Apr 13 Python
Python实现的扫码工具居然这么好用!
Jun 07 #Python
忆童年!用Python实现愤怒的小鸟游戏
python单元测试之pytest的使用
Jun 07 #Python
Python趣味实战之手把手教你实现举牌小人生成器
怎么用Python识别手势数字
利用python调用摄像头的实例分析
Jun 07 #Python
python通过opencv调用摄像头操作实例分析
Jun 07 #Python
You might like
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
web 页面分页打印的实现
2009/06/22 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
Python实现端口复用实例代码
2014/07/03 Python
详解Python if-elif-else知识点
2018/06/11 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
Python实现直播推流效果
2019/11/26 Python
python操作yaml说明
2020/04/08 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
大学生自我鉴定
2013/12/16 职场文书
给校长的建议书600字
2014/05/15 职场文书
2014年村委会工作总结
2014/11/24 职场文书
务虚会发言材料
2014/12/25 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
天那边观后感
2015/06/09 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
Python selenium的这三种等待方式一定要会!
2021/06/10 Python