套套哪款好用?Python 帮我们分析分析

640?wx_fmt=jpeg

点击右侧关注,了解黑客的世界!

640?wx_fmt=jpeg

点击右侧关注,掌握进阶之路!

640?wx_fmt=jpeg

点击右侧关注,探讨技术话题!


作者丨猪哥
文章授权转载自公众号:裸睡的猪(IT--Pig)

平时在购物过程中,各式各样的套套充斥着我们的眼球,很难判断出哪款套套好用?哪款用的人最多?哪款评价最高?今天用 Python 帮我们分析分析。
警告: 本教程仅用作学习交流,请勿用作商业盈利,违者后果自负! 如本文有侵犯任何组织集团公司的隐私或利益,请告知联系猪哥删除! ! !

一、淘宝登录复习

前面我们已经介绍过了如何使用  requests 库登录淘宝 ,收到了很多同学的反馈和提问,猪哥感到很欣慰,同时对那些没有及时回复的同学说声抱歉!
顺便再提一下这个登录功能,代码是完全没有问题。 如果你登录出现申请 st 码失败的错误时候,可以更换  _verify_password 方法中的所有请求参数。
640?wx_fmt=png
淘宝登录 2.0 改进中我们增加了 cookies 序列化的功能,目的就是为了方便爬取淘宝数据,因为如果你同一个 ip 频繁登录淘宝的话可能就会触发淘宝的反扒机制
关于淘宝登录的成功率,在猪哥实际的使用中基本都能成功,如果不成功就按上面的方法更换登录参数!

二、淘宝商品信息爬取

这篇文章主要是讲解如何爬取数据,数据的分析放在下一篇。 之所以分开是因为爬取淘宝遇到的问题太多,而猪哥又打算详细再详细的为大家讲解如何爬取,所以考虑篇幅及同学吸收率方面就分两篇讲解吧! 宗旨还会不变: 让小白也能看得懂
本次爬取是调用淘宝 pc 端搜索接口,对返回的数据进行提取、然后保存为 excel 文件!
看似一个简单的功能却包含了很多问题,我们来一点一点往下看吧!

三、爬取单页数据

开始写一个爬虫项目我们都需要量化后再分步,而一般第一步便是先爬取一页试试!

1.查找加载数据 URL

我们在网页中打开淘宝网,然后登录,打开 chrome 的调试窗口,点击 network,然后勾选上 Preserve log,在搜索框中输入你想要搜索的商品名称。
640?wx_fmt=png
这是第一页的请求,我们查看了数据发现: 返回的商品信息数据插入到了网页里面,而不是直接返回的纯json数据
640?wx_fmt=png

2. 是否有返回纯json数据接口?

然后猪哥就好奇有没有返回纯json的数据接口呢? 于是我就点了下一页(也就是第二页)
640?wx_fmt=png
请求第二页后猪哥发现返回的数据竟然是纯 json,然后比较两次请求url,找到只返回 json 数据的参数!
640?wx_fmt=png
通过比较我们发现搜索请求 url 中如果带 ajax=true 参数的话就直接返回 json 数据,那我们是不是可以直接模拟直接请求 json 数据!
所以猪哥就直接使用第二页的请求参数去请求数据(也就是直接请求json 数据),但是请求第一页就出现错误:
640?wx_fmt=png 直接返回一个链接而 不是 json 数据,这个链接是什么鬼?点一下。。。
640?wx_fmt=png
铛铛铛,滑块出现,有同学会问: 用 requests 能搞定淘宝滑块吗?猪哥咨询过几个爬虫大佬,滑块的原理是收集响应时间,拖拽速度,时间,位置,轨迹,重试次数等然后判断是否是人工滑动。而且还经常变算法,所以猪哥选择放弃这条路!

3.使用请求网页接口

所以我们只能选择类似第一页(请求 url 中不带 ajax=true 参数,返回整个网页形式)的请求接口,然后再把数据提取出来!
640?wx_fmt=png
这样我们就可以爬取到淘宝的网页信息了

四、提取商品属性

爬到网页之后,我们要做的就是提取数据,这里先从网页提取 json 数据,然后解析 json 获取想要的属性。

1.提取网页中商品 json 数据

既然我们选择了请求整个网页,我们就需要了解数据内嵌在网页的哪个位置,该怎么提取出来。
经过猪哥搜索比较发现,返回网页中的 js 参数: g_page_config 就是我们要的商品信息,而且也是 json 数据格式!
640?wx_fmt=png
然后我们写一个正则就可以将数据提取出来了!
 
 
goods_match = re.search(r'g_page_config = (.*?)}};', response.text)

2.获取商品价格等属性

要想提取 json 数据,就要了解返回 json 数据的结构,我们可以将数据复制到一些 json 插件或在线解析
640?wx_fmt=png

了解 json 数据结构之后,我们就可以写一个方法去提取我们想要的属性了。
640?wx_fmt=png

五、保存为 excel

操作 excel 有很多库,网上有人专门针对excel操作库做了对比与测评感兴趣可以看看: https://dwz.cn/M6D8AQnq
猪哥选择使用 pandas 库来操作 excel,原因是 pandas 比较操作方便且是比较常用数据分析库!

1.安装库

pandas 库操作 excel 其实是依赖其他的一些库,所以我们需要安装多个库
 
 
pip install xlrd
pip install openpyxl
pip install numpy
pip install pandas

2.保存excel

640?wx_fmt=png
这里有点坑的是 pandas 操作 excel 没有追加模式,只能先读取数据后使用 append 追加再写入 excel!
查看效果
640?wx_fmt=png

六、批量爬取

一次爬取的整个流程(爬取、数据提取、保存)完成之后,我们就可以批量循环调用了。
640?wx_fmt=png
这里设置的超时秒数是猪哥实践出来的,从 3 s、5 s到 10 s以上,太频繁容易出现验证码!
640?wx_fmt=png
猪哥分多次爬取了两千多条数据。
640?wx_fmt=png

七、爬取淘宝遇到的问题

爬取淘宝遇到了非常多的问题,这里为大家一一列举:

1.登录问题

640?wx_fmt=png
问题: 申请 st 码失败怎么办?
回答: 更换  _verify_password 方法中的所有请求参数。
参数没问题的话登录基本都会成功!

2.代理池

为了防止自己的 ip 被封,猪哥使用了代理池。 爬取淘宝需要高质量的ip 才能爬取,猪哥试了很多网上免费的 ip,基本都不能爬取。
640?wx_fmt=png
但是有一个网站的 ip 很好 站大爷: http://ip.zdaye.com/dayProxy.html ,这个网站每小时都会更新一批 ip,猪哥试过还是有很多 ip 是可以爬取淘宝的。

3.重试机制

为了防止正常请求失败,猪哥在爬取的方法上加上了重试机制!
640?wx_fmt=png
需要安装 retry 库
 
 
pip install retry

4.出现滑块

上面那些都没问题,但是还是会出现滑块,猪哥测试过很多次,有些爬取 20 次- 40 次左右最容易出现滑块。
640?wx_fmt=png
出现滑块只能等个半小时后继续爬,因为目前还不能使用 requests 库解决滑块,后面学习 selenium 等其他框架看看是否能解决!

5.目前这只爬虫

目前这只爬虫并不完善,只能算是半成品,有很多可以改进的地方,比如自动维护 ip 池功能,多线程分段爬取功能,解决滑块问题等等,后面我们一起来慢慢完善这只爬虫,使他可以成为一只完善懂事的爬虫!

源码可以点击下面的链接:

https://github.com/pig6/taobao_spider


 推荐↓↓↓ 

?16个技术公众号】都在这里!

涵盖:程序员大咖、源码共读、程序员共读、数据结构与算法、黑客技术和网络安全、大数据科技、编程前端、Java、Python、Web编程开发、Android、iOS开发、Linux、数据库研发、幽默程序员等。

640?wx_fmt=png
万水千山总是情,点个 “ 在看” 行不行
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值