警告:本教程仅用做学习交流,请勿用做商业盈利,违者后果自负!如本文有侵犯任何组织集团公司的隐私或利益,请告知联系猪哥删除!!!html
前面咱们已经介绍过了如何使用requests库登陆淘宝,收到了不少同窗的反馈和提问,猪哥感到很欣慰,同时对那些没有及时回复的同窗说声抱歉!python
顺便再提一下这个登陆功能,代码是彻底没有问题。若是你登陆出现申请st码失败的错误时候,能够更换_verify_password
方法中的全部请求参数。 git
在淘宝登陆2.0改进中咱们增长了cookies序列化的功能,目的就是为了方便爬取淘宝数据,由于若是你同一个ip频繁登陆淘宝的话可能就会触发淘宝的反扒机制!github
关于淘宝登陆的成功率,在猪哥实际的使用中基本都能成功,若是不成功就按上面的方法更换登陆参数!ajax
这篇文章主要是讲解如何爬取数据,数据的分析放在下一篇。之因此分开是由于爬取淘宝遇到的问题太多,而猪哥又打算详细再详细的为你们讲解如何爬取,因此考虑篇幅及同窗吸取率方面就分两篇讲解吧!宗旨还会不变:让小白也能看得懂!算法
本次爬取是调用淘宝pc端搜索接口,对返回的数据进行提取、而后保存为excel文件!chrome
看似一个简单的功能却包含了不少问题,咱们来一点一点往下看吧!json
开始写一个爬虫项目咱们都须要量化后再分步,而通常第一步即是先爬取一页试试!bash
咱们在网页中打开淘宝网,而后登陆,打开chrome的调试窗口,点击network,而后勾选上Preserve log,在搜索框中输入你想要搜索的商品名称 cookie
而后猪哥就好奇有没有返回纯json的数据接口呢?因而我就点了下一页(也就是第二页)
因此猪哥就直接使用第二页的请求参数去请求数据(也就是直接请求json数据),可是请求第一页就出现错误:
因此咱们选择相似第一页(请求url中不带ajax=true参数,返回整个网页形式)的请求接口,而后再把数据提取出来!
爬到网页以后,咱们要作的就是提取数据,这里先从网页提取json数据,而后解析json获取想要的属性。
既然咱们选择了请求整个网页,咱们就须要了解数据内嵌在网页的哪一个位置,该怎么提取出来。
通过猪哥搜索比较发现,返回网页中的js参数:g_page_config就是咱们要的商品信息,并且也是json数据格式!
goods_match = re.search(r'g_page_config = (.*?)}};', response.text)
复制代码
要想提取json数据,就要了解返回json数据的结构,咱们能够将数据复制到一些json插件或在线解析
操做excel有不少库,网上有人专门针对excel操做库作了对比与测评感兴趣能够看看:dwz.cn/M6D8AQnq
猪哥选择使用pandas库来操做excel,缘由是pandas比较操做方便且是比较经常使用数据分析库!
pandas库操做excel实际上是依赖其余的一些库,因此咱们须要安装多个库
pip install xlrd
pip install openpyxl
pip install numpy
pip install pandas
复制代码
查看效果
一次爬取的整个流程(爬取、数据提取、保存)完成以后,咱们就能够批量循环调用了。
爬取淘宝遇到了很是多的问题,这里为你们一一列举:
_verify_password
方法中的全部请求参数。
参数没问题的话登陆基本都会成功!
为了防止本身的ip被封,猪哥使用了代理池。爬取淘宝须要高质量的ip才能爬取,猪哥试了不少网上免费的ip,基本都不能爬取。
可是有一个网站的ip很好 站大爷:ip.zdaye.com/dayProxy.ht… ,这个网站每小时都会更新一批ip,猪哥试过仍是有不少ip是能够爬取淘宝的。
为了防止正常请求失败,猪哥在爬取的方法上加上了重试机制!
pip install retry
复制代码
上面那些都没问题,可是仍是会出现滑块,猪哥测试过不少次,有些爬取20次-40次左右最容易出现滑块。
目前这只爬虫并不完善,只能算是半成品,有不少能够改进的地方,好比自动维护ip池功能,多线程分段爬取功能,解决滑块问题等等,后面咱们一块儿来慢慢完善这只爬虫,使他能够成为一只完善懂事的爬虫!