用python爬取天猫商城手机相关信息
准备换手机了,但是在网站看很麻烦,一页一页翻还得忍受广告的轰炸,还好我们有爬虫!
话不多说,先上干货:
话不多说,先上干货:
1、 环境: python3
2、 模块:requests、time、random、lxml#pip安装即可,安装不了的可以尝试下载whl文件,不知道怎么下载的可以留言
3、 url:https://list.tmall.com/search_product.htm?q=%E6%89%8B%E6%9C%BA
#q=后面的内容是”手机”的url编码
4、 思路:用xpath获取每个产品的div盒子,然后在取里面信息
然后在获取网页page信息,做循环遍历,总的来说不是很难
5、 难点:第一个就是cookie,在写这个代码的时候我重新登录以及中途验证了N次,不得不说,反爬做的不错。记得cookie的获取要在登录后获取,中间加入time.sleep()函数。第二点就是保存到文件了,开始我保存到txt文本了,但是非常难看,而且还想用排序等等功能对所有信息整理,最后选择保存到csv,这样就很简单了。最后一个难点就是内容的获取,我这里一共要获取7个内容,但是在爬取过程中,总有一些是无法获取的,也没有在逐一分析,干脆就用try跳过了,这个地方标记下,以后可以尝试重新写下!
6、 拓展:url中好多内容都是无用信息,起码在本次爬虫过程中无用,可以尝试写查询版的爬虫,直接查询分类然后爬取内容。网站反爬很严重的话,可以尝试加入代理ip池和cookie池,应该会避免频繁输入验证码的问题,有空试试!
7、 PS:淘宝本身有api接入我知道的,写这个爬虫呢,主要是练手,并不是就想获取什么什么信息,所以就无视了,介意勿喷!另外提醒大家一点:爬什么信息都可以,但是切记不要传播,有风险哦!
大概就这些,好了,我们来写代码吧!
因为网站对cookie要求很高,就用了requests. Session()方法!
只要不踢出,代码很简单的,中间陆陆续续出现了几次需要输入验证码,如果持续获取不了数据,可以去网页刷新下看看
输入验证码就可以了
获取翻页page,在浏览器中打开审查元素,这里我用的是火狐!,然后查找页码所在标签
再来分析下url规律,
第3页url:
这里要注意第一页和后面的页码的页面url是不一样的,这点在for循环里面用if标记下就可以,然后分析发现,其实url里面的其他内容都可以不要一样可以访问,所以精简下就可以:
第1页url:https://list.tmall.com/search_product.htm?q=%E6%89%8B%E6%9C%BA
第2页url:
https://list.tmall.com/search_product.htm?
s=60&q=%CA%D6%BB%FA
第3页url:
https://list.tmall.com/search_product.htm?
s=120&q=%CA%D6%BB%FA
然后我们在找产品的标签,方法和上面一样,都是在审查元素里面,先找到整个div盒子
这是我抓取内容的xpath代码,注意的是有的属性中是有空格的。。。(大坑)!!!
然后是抓取的店铺名字有的带\n也要替换掉……(第二个大坑)!!!
新建空列表,然后把抓取的内容保存到列表中,写到循环下因为每页保存一次,第二页的时候,直接清空列表如此循环:
注意时间参数,不加很容易就被踢,最后保存到csv,大功告成!!!
剩下的就是各种对比,最后选出适合自己的手机了!
最后说一句:iPhone X真心很漂(chou)亮(bao),我们还是买华为mate10吧
看在写这么多的份上,给个赞呗!( ̄ε  ̄)