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返回真假值(True or False)小技巧
Apr 10 Python
python文件操作相关知识点总结整理
Feb 22 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
Python传递参数的多种方式(小结)
Sep 18 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
python logging模块的使用详解
Oct 23 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
python能做哪方面的工作
2020/06/15 Python
Python map及filter函数使用方法解析
2020/08/06 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
会计专业毕业生自我评价
2013/09/25 职场文书
房地产销售大学生自我评价分享
2013/11/11 职场文书
会计专业自荐信
2013/12/02 职场文书
超市5.1促销活动
2014/01/15 职场文书
《画风》教学反思
2014/04/16 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
学习党史心得体会2016
2016/01/23 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript