各位同学,好久没有写原创技术文章了。最近有点忙,所以进度很慢。我向大家道歉。警告:本教程仅供学习交流,请勿用于商业盈利,违者后果自负!本文如有侵犯任何组织集团公司隐私或利益,请告知并联系朱哥删除!!!1、淘宝登录回顾前面我们已经介绍了如何使用requests库登录淘宝。我们收到了许多学生的反馈和问题。朱大哥很欣慰,对没有及时回复的朋友表示歉意!对了,再提一下这个登录功能,代码完全没问题。如果登录后报错申请st码失败,可??以将_verify_password方法中的请求参数全部替换掉??。在淘宝登录2.0的改进中,我们加入了序列化cookies的功能,目的是为了方便爬取淘宝数据,因为如果频繁使用同一个IP登录淘宝,可能会触发淘宝的反捡机制!关于淘宝登录的成功率,在朱哥的实际使用中基本可以成功。如果不成功,按照上面的方法更换登录参数!2、爬取淘宝商品信息本文主要讲解如何爬取数据,数据的分析放在下一篇。分开来的原因是爬淘宝遇到的问题太多,而朱哥打算详细讲解一下如何爬取,所以考虑到篇幅和同学们的吸收率,还是分成两篇讲解吧!宗旨不变:让小白明白!本次爬取是调用淘宝PC端搜索接口,提取返回的数据,然后保存为excel文件!看似一个简单的函数,却包含了很多问题,让我们一点一点往下看吧!3、爬取单页数据,开始写爬虫项目。我们都需要量化,然后一步步来。一般第一步都是先抓取一个页面试试看!1.找到加载数据的URL。在网页打开淘宝,登录,打开chrome的调试窗口,点击网络,然后勾选保留日志,在搜索框中输入你要搜索的商品名称。这是第一个页面请求,我们查了资料发现:返回的商品信息数据是插入到网页中的,而不是直接返回的纯json数据!2、是否有返回纯json数据的接口?然后朱哥想知道有没有返回纯json的数据接口?于是点击下一页(也就是第二页)去请求第二页,朱哥发现返回的数据竟然是纯json,然后对比了两个请求的url,发现只有那个参数返回json数据!通过对比,我们发现如果搜索请求url中包含ajax=true参数,会直接返回json数据,那我们是不是可以直接模拟直接请求json数据呢!于是猪哥在第二页直接使用请求参数请求数据(也就是直接请求json数据),但是在请求的第一页出现错误:直接返回一个链接而不是json数据,这是什么鬼这个链接?点击。..铛铛铛,滑块出现了,有同学会问:可以用requests修复淘宝滑块吗?朱哥请教了好几位爬虫大师。滑块的原理是采集响应时间、拖动速度、时间、位置、轨迹、重试次数等,然后判断是否手动滑动。而且算法经常变,所以朱哥选择放弃这条路!3、使用请求网页接口所以我们选择一个和第一个页面类似的请求接口(请求url中不带ajax=true参数,返回整个网页形式),然后提取数据!这样我们就可以爬取到淘宝的网页信息了4.提取商品属性爬到网页之后,我们要做的就是提取数据。这里,我们先从网页中提取json数据,然后解析json得到想要的属性。1、提取网页中的产品json数据既然我们选择了请求整个网页,那么我们就需要知道数据嵌入到网页的什么位置,以及如何提取。经过朱大哥的查找对比,发现返回网页中的js参数:g_page_config就是我们要的商品信息,而且也是json数据格式!然后我们写一个正则表达式来提取数据!goods_match=re.search(r'g_page_config=(.*?)}};',response.text)2.获取商品价格等信息如果要提取json数据,需要了解返回json的结构data,我们可以把数据拷贝到一些json插件或者在线解析了解json数据结构后,我们就可以写一个方法来提取我们想要的属性。有兴趣评测的可以看看:https://dwz.cn/M6D8AQnq朱哥选择使用pandas库操作excel,因为pandas操作起来比较方便,是一个常用的数据分析库!1、安装pandas库操作excel其实还依赖一些其他的库,所以我们需要安装多个库pipinstallxlrdpipinstallopenpyxlpipinstallnumpypipinstallpandas读取数据后使用append追加,然后写入excel!查看效果6.整个批量爬取的过程(爬取、提取数据、保存)完成后,我们就可以批量循环调用了。这里设置的超时秒数是朱哥练的,3s、5s到10多s不等,太频繁了容易出验证码!朱大哥几次爬取2000多条数据。7、爬淘宝遇到的问题。爬淘宝遇到的问题很多。这里我就为大家一一列举:1.登录问题问题:申请st码失败怎么办?管理?答:替换_verify_password方法中的所有请求参数。如果参数没有问题,登录基本就成功了!2.代理池为了不让自己的IP被封,猪哥使用了代理池。爬淘宝需要优质IP才能爬取。朱大哥在网上试了很多免费IP,基本都爬不出来。但是有个网站ip很好:http://ip.zdaye.com/dayProxy....这个网站每小时会更新一批ip。朱哥试过了,还是有很多ip可以爬到淘宝的。3、重试机制为了防止正常的请求失败,朱哥在抓取方式中加入了重试机制!您需要安装重试库pipinstallretry4。上面的slider没有问题,但是还是出现了slider。朱大哥测试过很多次,有的抓取最有可能出现20-40次左右。出现slider的时候只能等半小时继续爬,因为requests库无法解决slider。以后学习selenium等其他框架看看能不能解决!5、目前的爬虫目前的爬虫还不够完善,只能算是一个半成品,还有很多可以改进的地方,比如自动维护ip池的功能,多线程的功能线程分段爬取,解决滑块问题等等。让我们逐步完善这个爬虫,让它成为一个完美的、有理智的爬虫吧!源码:https://github.com/pig6/taoba...,感兴趣的产品快去试试吧!
