学习
实践
活动
专区
工具
TVP
写文章

python爬虫优美图库

好久没有写爬虫了,于是这回便心血来潮写个爬虫。在网上翻了翻一些图片网站,找到了一个看似不错的目标,就是优美图库!点进去一看,都是美女图片啊哈,放大照片看看,会有一种忍不住某某的冲动。。。咳咳,言归正传,这么多图片好想都下载到本地来啊,手动的话当然太麻烦了,还是得靠强大的python爬虫啦。

首先进去网站主页,有很多图片分类,有真人美女啊,外国的啊,或者动漫的啊,很多很多,全部爬的话要太久了,就选取一个分类吧。

于是就选了 这个类别。

然后初始的url为'http://www.umei.cc/meinvtupian/mainvzipai/'。通过requests模块的session.get()来连接这个url(直接使用requests.get()来连接也是可以的),连接成功后用beautifulSoup来解析这个页面,然后获取页面内每个图册的链接,得到一个列表,遍历整个列表,就可以依次对每个图册进行操作。

依次进入每一个图册,每个图册内会有很多页,每一页都有一张高清大图,用for循环遍历每一页,解析页面后取得那张高清大图的图片地址xxxxx.jpg, 便可以把它下载到本地了。

对整个类别的第一页所有图册进行上述操作后,便可以再判断是否有下一页,若有,则对下一页的next_url发出请求,再进行上述的相同操作。一遍会有很多很多页的,所以爬下去会花点时间,甚至爬着爬着会被服务器识别出来这是爬虫行为,从而会被服务器拒绝访问,所以在反反爬虫的机制上还有待提升,不过总的来说,还是能爬到不少图片的。

优美图库里的图片有防盗链的机制,即会判断你的请求来源于哪里,通过查看你的请求中的referer参数便可以得知,假如是正常在优美图库网站内访问该图片的话,它会是你访问该图片的前一个url地址,即表明你是从前一个站内的页面跳转过来的,所以便能成功访问。但是如果使用requests的get请求直接访问该图片的地址,默认是没有referer参数的,所以服务器会认为你不是从站内正常访问的,所以会查看到404图片。为了应对这一情况,可以在headers请求头中加入referer参数,其值为访问该图片后的前一个url地址,即headers['referer'] = 前一个url。由此便可以做到反防盗链了。

在校园网的限速下,经历了不朽的岁月和漫长的时光,总算是爬完了这个类别。还是蛮多的,对每一个相册进行分类存放,得到了以下的内容:

随便打开某些文件夹,里面都有挺多不同的图,emmm

再看看所有这些图片一共占的大小

一个类别就这么多了,要爬完整个网站,恐怕得需要一台好的电脑,或者付出一些岁月...

以下是代码----

暂且就这样先,有很多地方还需要学习,下次爬虫会试试scrapy这个框架。

See ya~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180506G01IOW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券