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避免死锁方法实例分析
Jun 04 Python
python中的代码编码格式转换问题
Jun 10 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
pytorch之ImageFolder使用详解
Jan 06 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
django为Form生成的label标签添加class方式
May 20 Python
python小白切忌乱用表达式
May 29 Python
django中ImageField的使用详解
Dec 21 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
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
PHP获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
简单介绍Python中的try和finally和with方法
2015/05/05 Python
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
python实现求特征选择的信息增益
2018/12/18 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Python hmac模块使用实例解析
2019/12/24 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
护士毕业实习感言
2014/03/05 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
仲裁协议书
2014/09/26 职场文书
行政前台岗位职责
2015/04/16 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP