代码如下:

  1. #coding:utf-8
  2. # import datetime
  3. import requests
  4. import os
  5. import sys
  6. from lxml import etree
  7. import codecs
  8.  
  9. class Spider:
  10. def __init__(self):
  11. self.headers = {}
  12. self.headers['User_Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'
  13. self.headers['Referer'] = 'http://www.mzitu.com/all/'
  14.  
  15. def crawl(self, root_url):
  16. html_text = requests.get(root_url,headers=self.headers).text
  17. html_tree = etree.HTML(html_text)
  18. groups = html_tree.xpath("//div[@class='main-content']//ul[@class='archives']//a")
  19. count = 0
  20. print "开始抓取:"
  21. for group in groups:
  22. title = group.text
  23. groupUrl = group.get('href')
  24. print "正在抓取组图:"+title
  25. dirpath = self.makDir(title) #获取标题,并以标题为名字创建文件夹
  26. self.getGroup(groupUrl,dirpath) #
  27. count = count+1
  28. if count>=5:
  29. print "抓取完成……"
  30. os._exit(0)
  31.  
  32. def makDir(self,dirname):
  33. dirpath = os.path.join(u'E:\学习资料',dirname)
  34. if not os.path.exists(dirpath):
  35. os.makedirs(dirpath)
  36. return dirpath
  37.  
  38. def getGroup(self,groupUrl,dirpath):
  39. self.headers['Referer'] = groupUrl
  40. html_text = requests.get(groupUrl, headers=self.headers).text
  41. html_tree = etree.HTML(html_text)
  42. maxPage = html_tree.xpath("//div[@class='pagenavi']//span")[-2].text #获取改组图的张数
  43. for page in range(1,int(maxPage)+1): #获取每一张图的所在页面
  44. pageUrl = groupUrl + '/' + str(page) #拼接页面url
  45. self.getPage(pageUrl,page,dirpath) #访问该页面
  46.  
  47. def getPage(self, pageUrl,page,dirpath):
  48. self.headers['Referer'] = pageUrl
  49. page_text = requests.get(pageUrl, headers=self.headers).text #请求该图所在的页面
  50. page_tree = etree.HTML(page_text)
  51. imageurl = page_tree.xpath("//div[@class='main-image']//img")[0].get('src') #获取图片url
  52. image = requests.get(imageurl, headers=self.headers).content #请求获取图片
  53. self.saveImage(image,page,dirpath)
  54.  
  55. def saveImage(self,image,page,dirpath):
  56. imagepath = os.path.join(dirpath, str(page) + u'.jpg')
  57. file = codecs.open(imagepath, 'wb')
  58. file.write(image)
  59. file.close()
  60.  
  61. if __name__ == '__main__':
  62. reload(sys)
  63. sys.setdefaultencoding('utf-8')
  64. Mzitu = Spider()
  65. Mzitu.crawl('http://www.mzitu.com/all')

Python爬虫 —— 抓取美女图片的更多相关文章

  1. Python爬虫 —— 抓取美女图片(Scrapy篇)

    杂谈: 之前用requests模块爬取了美女图片,今天用scrapy框架实现了一遍. (图片尺度确实大了点,但老衲早已无恋红尘,权当观赏哈哈哈) Item: # -*- coding: utf-8 - ...

  2. python 爬虫抓取心得

    quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...

  3. Python3简单爬虫抓取网页图片

    现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到 ...

  4. Python爬虫----抓取豆瓣电影Top250

    有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...

  5. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  6. python爬虫-爬取百度图片

    python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...

  7. Python 爬虫: 抓取花瓣网图片

    接触Python也好长时间了,一直没什么机会使用,没有机会那就自己创造机会!呐,就先从爬虫开始吧,抓点美女图片下来. 废话不多说了,讲讲我是怎么做的. 1. 分析网站 想要下载图片,只要知道图片的地址 ...

  8. python爬虫抓取哈尔滨天气信息(静态爬虫)

    python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip i ...

  9. python+requests抓取页面图片

    前言: 学完requests库后,想到可以利用python+requests爬取页面图片,想到实战一下.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图片,所以我选取饿 ...

随机推荐

  1. 简单实现接口自动化测试(基于python+unittest)

    简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...

  2. 软件业的发展方向:云、Web以及App

    随着行业互联网的发展,未来的软件发展方向是云技术.Web软件以及基于移动设备的Apps. 桌面软件主要负责大型的计算.渲染和消耗非常大CPU和内存的图形软件,以及基于这些软件的二次开发软件如Revit ...

  3. js 扩展replaceAll

    //扩展replaceAll; String.prototype.replaceAll = function(s1,s2) { return this.replace(new RegExp(s1,&q ...

  4. 应用程序之UITableView的编辑模式

    cell分层结构 效果展示 代码实现 一.cell的分层结构 二.效果展示 三.代码实现 // // ViewController.m // 01-TableView的删除实现 // // Creat ...

  5. Mjpg_Streamer 的移植

    1. 移植mjpg-streamer a.1 移植libjpeg tar zxf libjpeg-turbo-1.2.1.tar.gz cd libjpeg-turbo-1.2.1 ./configu ...

  6. Log4net日志记录、详细配置(自己使用>)

    log4net库是Apache log4j框架在Microsoft.NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具 1.首先添加对log4net.dll的引 ...

  7. C语言重要概念汇总

    作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.co ...

  8. idea设置自定义图片

    看图操作哈: 1. 2. 逼格满满:

  9. C语言高速入门系列(四)

    C语言高速入门系列(四) C语言数组 ---------转载请注明出处:coder-pig 贴心小提示:假设图看不清晰可右键另存为,应该就非常清晰了; 注意上面的代码都要自己过一遍哦! 本节引言: 经 ...

  10. JS加水印遮罩

    <%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC & ...