声明:本博客只是简单的爬虫示范,并不涉及任何商业用途。
一.前言
最近博主在浏览淘宝时突然萌发了一个想爬它的念头,于是说干就干,我便开始向淘宝“下毒手”了。由于本人平时经常喜欢在淘宝上浏览各种手机的信息,于是我便以“手机”为关键词进行搜索,最后我利用爬虫获取了所有相关的手机信息,并对各种厂家生成手机的销量进行了一波可视化,下面是完整的记录过程。
二.爬虫过程
2.1 解决淘宝的登录问题
首先,我在浏览器中打开淘宝,然后登录后以手机为关键词进行搜索,得到如下链接:
但当我用requests库请求该url时,结果却发现要先登录,即会出现下述界面:
这个问题要如何解决呢首先想到的是利用cookie,于是我便在登录淘宝时,通过Chrome浏览器的开发者工具获取到了登录淘宝的cookie,然后我将该cookie作为参数传入reqeusts库的相关函数,结果发现成功获取到想要的页面!
2.2 页面URL分析
在页面的下方可以看到手机售卖的页面共有100页,那么要如何获取到对应的页面呢先点击下方的按钮获取到了几个页面的url,展示如下:
根据观察上述url中变化的只有bcoffset,ntoffset以及s,但是只有最后一个参数s改变才会使得页面翻转,而最后一个参数s是递增的,每次增加44,因此我们可以通过改变s来获取翻页的URL。
2.3 数据提取
在淘宝页面右键->查看源代码,可以发现数据数据隐藏在名为g_page_config的json对象里面:
因此,可以先通过正则表达式将其过滤出来,然后利用json模块将其加载为python对象,之后便可以对其进行数据提取(详细的提取过程参加后面的完整代码),需要提取的数据展示如下:
2.4 爬虫完整流程
综合以上几点,淘宝手机信息爬取的流程图如下图所示:
2.5 爬取程序及结果展示
完整的爬虫程序展示如下:
利用上述方式将爬取的数据保存为csv文件,部分结果截图展示如下:
三.数据处理及分析
3.1 数据去重
通过爬虫一共获取到4400多条记录,但其中有没有重复数据呢,于是我通过pandas来对其进行重复行统计,结果确实返现不少重复行,对应处理代码如下:
因此我在这里进行了相应的去重处理,代码为:
3.2 统计各手机的销量
在完成去重后,我对各手机的销量进行了统计,最后利用matplotlib将统计数据绘制成了直方图,下面是对应的结果:
可以看出华为,小米和苹果占据了销量的前三甲。
四.结语
原文地址:https://blog.csdn.net/qq_42103091
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208564 人正在系统学习中 Python源码
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!