本作品不可用于任何商业途径,仅供学习交流!!!
分析:
在登陆淘宝的账号下,点击店铺的所有宝贝:
假如没有登陆淘宝账号,点击店铺的所有宝贝是不会加载显示出来的:
所以该项目的第一步是要用selenium模拟登陆淘宝,把cookie传递给requests 的session!
在登陆淘宝的账号下,点击店铺的所有宝贝,打开浏览器的抓捕工具,抓取ajax请求的包:
ajax请求分析:
图1:
图2:
假如对店铺所有商品的ajax请求成功,对该请求返回的数据选择性的解析提取,即可抓取到想要的信息(商品、价格、总销售量等)
淘宝的反爬是比较厉害的,如果频繁的对某个店铺的链接发起请求,淘宝的服务器就会检测到,就会出现滑动模块访问验证,要是出现这样的情况,就无法抓取到数据,所以该项目是有缺陷的(在requests, 不会处理这个反爬策略),如图:
ok,下面是项目的代码(该项目只展示抓取一个商家店铺第一页的所有商品数据):
这块是定义使用selenium模拟登陆淘宝,并且把模拟登陆的cookie传递给requests 的session 的函数,最后把接受了模拟登陆的cookie的session返回给该函数 :
定义对店铺ajax发起请求的函数,headers的ua动态化,对该ajax请求的部分params参数,通过定义的函数,动态传入给params的部分参数,并且把该ajax请求的返回相应数据,返回给该函数 :
该函数是给之前定义的2个函数传入参数(淘宝的账号密码,requests 的session、要爬取数据商家店铺的ID、商家店铺所有商品的ajax请求url),并且接受该请求的响应数据,设置响应数据编码格式,返回给该函数,给接下来定义的函数做数据解析和数据的持久化存储:
这块定义的函数是对抓取到的数据做数据解析和数据的持久化存储,因为淘宝的反爬比较厉害,之前分析也有说到,如果频繁的对某个店铺的链接发起请求,淘宝的服务器就会检测到,就会出现滑动模块访问验证,这个时候就会出错,所以这里对ajax请求返回的响应做一个判断,如果返回的响应数据的len() > 2000(请求成功,没有出现滑动模块访问验证等的问题), 表示抓取到数据,并且数据进行数据解析和数据的持久化存储!
反之打印出错:
下面是该项目实现抓取到数据的展示:
本作品不可用于任何商业途径,仅供学习交流!!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。