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基于twisted实现简单的web服务器
Sep 29 Python
浅谈python多线程和队列管理shell程序
Aug 04 Python
浅谈Python中的作用域规则和闭包
Mar 20 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
对python 调用类属性的方法详解
Jul 02 Python
python代码编写计算器小程序
Mar 30 Python
python实现统计代码行数的小工具
Sep 19 Python
Python代码块及缓存机制原理详解
Dec 13 Python
Python 解码Base64 得到码流格式文本实例
Jan 09 Python
Python 生成VOC格式的标签实例
Mar 10 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 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
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
重命名批处理python脚本
2013/04/05 Python
python调用java的Webservice示例
2014/03/10 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
python Tkinter版学生管理系统
2019/02/20 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
python中p-value的实现方式
2019/12/16 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
python lambda的使用详解
2021/02/26 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
普通大学毕业生自荐信范文
2014/02/23 职场文书
2014年公司工作总结
2014/11/22 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
小孩不笨观后感
2015/06/03 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android