标签:商品信息 请求 selenium 抓取 爬取 ajax 淘宝 数据 店铺
本作品不可用于任何商业途径,仅供学习交流!!!
分析:
在登陆淘宝的账号下,点击店铺的所有宝贝:
假如没有登陆淘宝账号,点击店铺的所有宝贝是不会加载显示出来的:
所以该项目的第一步是要用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(请求成功,没有出现滑动模块访问验证等的问题), 表示抓取到数据,并且数据进行数据解析和数据的持久化存储!
反之打印出错:
下面是该项目实现抓取到数据的展示:
本作品不可用于任何商业途径,仅供学习交流!!!
标签:商品信息,请求,selenium,抓取,爬取,ajax,淘宝,数据,店铺 来源: https://www.cnblogs.com/YYQ-4414/p/14608685.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。