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 Socket编程详细介绍
Mar 23 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
python 求一个列表中所有元素的乘积实例
Jun 11 Python
python解释器spython使用及原理解析
Aug 24 Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
关于python中导入文件到list的问题
Oct 31 Python
pandas取dataframe特定行列的实现方法
May 24 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
javascript中的new使用
2010/03/20 Javascript
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
vue中使用cropperjs的方法
2018/03/01 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
js实现盒子移动动画效果
2020/08/09 Javascript
Python 备份程序代码实现
2017/03/06 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
用友笔试题目
2016/10/25 面试题
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
新闻编辑求职信
2014/07/13 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android