完成该请求后,爬取数据(李宁卫衣)如下:
接下来看如何实现的?
首先打开淘宝网:https://www.taobao.com/,在搜索栏输入自行车,结果发现页面转跳到https://login.taobao.com/member/login.jhtml 淘宝登录页面,要求登录才能进行关键字搜索获取数据。(需要登录的时候应当想到cookies)
cookies 及其用处: 当我们登录某网站时,服务器会生成一个cookies,包含有用户登录等信息,与当前账号绑定,浏览器将此cookies存储到。下一次,浏览器带着cookies访问网站,就不需要在输入账号密码。注意cookies是有时效性的。
所以,目标明确,第一步,获取用户登录的cookies
需要登录淘宝页面获取cookies,才能执行后续操作。而模拟登录有两种方法:
- 搞清淘宝登录机制,修改参数登录。(借鉴裸睡的猪 猪哥的文章)
- 使用selenium调用webdriver模块,模拟人真实的操作浏览器。
方法一:直接看源码+备注,具体原因看猪哥的解释(当然代码是自己写的啊,思想借用)
在自行登录以后,把参数都复制到Data里替换掉代码中的data就可以。
方法二:使用selenium调用webdriver模块(自己写的,所以解释详细点)
前提是安装了Chorm driver插件,Chorm插件下载地址。 下载完成后,解压到python根目录下即可。
driver可以模拟人在目标栏目输入,也可以模拟人对按钮进行点击。
对登录页面以及源码进行分析:发现:
所以,代码如下:在账号密码框里输入内容,点击登录进行登录.
注意,有时候登录时需要滑动滑块,手动滑动登录即可。
到此用户操作所用cookies的已经获取,这时候就可以搜索关键字了
进入搜索页:https://s.taobao.com/search? 输入关键字,观察url变化
我们发现q参数对应着搜索内容。然后翻动页面,来到第二页,观察url变化,发现变化的有s参数
研究多个页面发现,url需要修改的参数只有q与s。
在翻页的过程中,发现我们所需要的内容在Response的第0个回应中,即存在于Element中,所以只要获取到该网页的源码,就可以获取到数据。
所以使用https://s.taobao.com/search?q=自行车&s=88 这个格式(q表示搜索的关键字,s*44代表页数)的链接就可以访问带有数据的源码。
所以代码如下:
这是我爬取的一个李宁卫衣的网页源码,发现重要信息保存在一个大字典:g_page_config中
所以我们可以通过正则表达式获取这个大字典,然后逐一提取各数据。或者直接正则各数据提取,我们采用第二种方法。
到这里已经把所有有效数据存储到title,location等变量中。它们均为字符串列表
使用csv保存数据
因为要求数据要根据销量降序排列,而销量数据格式为字符串。分析源码,发现源码中销量的表示一般有’8000+’、‘1.6万+’、‘784’这几种表示。即如果销量小于10000,则按照 ‘具体数字’ 或 ‘具体数字+’ 这样表示,如’845’、‘3500+’,如果数据大于一万,则会在后续加个万字, 如’1.6万+’,‘5.8万’,强转为float时需要做判断:
所以,通过条件判断语句和if else判断:
还有一个发现就是,商品的链接与nid是有关系的,具体关系如下:
到此代码已经分析完毕,源码如下,登录时修改自己的账号密码,以及文件的保存路径即可: