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函数中定义参数的四种方式
Nov 30 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
Windows下python3.7安装教程
Jul 31 Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
Python面向对象之多态原理与用法案例分析
Dec 30 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
使用python3 实现插入数据到mysql
Mar 02 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
python爬虫用scrapy获取影片的实例分析
Nov 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
杏林同学录(八)
2006/10/09 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
python3图片文件批量重命名处理
2019/10/31 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
建筑专业自荐信
2013/10/18 职场文书
外贸业务员工作职责
2014/01/06 职场文书
玲玲的画教学反思
2014/02/04 职场文书
绿里奇迹观后感
2015/06/15 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang