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创建XML文档
Mar 01 Python
python标准算法实现数组全排列的方法
Mar 17 Python
微信跳一跳辅助python代码实现
Jan 05 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
python小项目之五子棋游戏
Dec 26 Python
Django中modelform组件实例用法总结
Feb 10 Python
Python内置函数及功能简介汇总
Oct 13 Python
python中entry用法讲解
Dec 04 Python
python 实现一个简单的线性回归案例
Dec 17 Python
python使用BeautifulSoup 解析HTML
Apr 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
解析php中curl_multi的应用
2013/07/17 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
PHP中串行化用法示例
2016/11/16 PHP
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
js实现图片上传预览原理分析
2017/07/13 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
js实现蒙版效果
2020/01/11 Javascript
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
公司市场部岗位职责
2013/12/02 职场文书
销售工作岗位职责
2013/12/24 职场文书
新郎父亲婚宴答谢词
2014/01/11 职场文书
关于抽烟的检讨书
2014/02/25 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL