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 相关文章推荐
浅谈MySQL中的触发器
May 05 Python
python超简单解决约瑟夫环问题
May 12 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
wxpython中自定义事件的实现与使用方法分析
Jul 21 Python
Python机器学习之决策树算法实例详解
Dec 06 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
Python3 chardet模块查看编码格式的例子
Aug 14 Python
Python面向对象之私有属性和私有方法应用案例分析
Dec 31 Python
pycharm工具连接mysql数据库失败问题
Apr 01 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
pandas进行数据输入和输出的方法详解
Mar 23 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
javascript 常用代码技巧大收集
2009/02/25 Javascript
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
python计算对角线有理函数插值的方法
2015/05/07 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
利用python进行文件操作
2020/12/04 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
shell程序中如何注释
2012/01/28 面试题
大学班长的职责
2014/01/27 职场文书
日本语毕业生自荐信
2014/02/01 职场文书
环保建议书作文
2014/03/12 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技