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中.py文件打包成exe可执行文件详解
Mar 22 Python
python常见排序算法基础教程
Apr 13 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
python如何去除字符串中不想要的字符
Jul 05 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
python aiohttp的使用详解
Jun 20 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
python3连接MySQL8.0的两种方式
Feb 17 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
python爬虫框架feapde的使用简介
Apr 20 Python
python如何读取和存储dict()与.json格式文件
Jun 25 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异步执行的常用方式详解
2013/06/03 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
Django实现发送邮件功能
2019/07/18 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python页面加载的等待方式总结
2021/02/28 Python
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
《问银河》教学反思
2014/02/19 职场文书
电影圆明园观后感
2015/06/03 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python