代码如下:

#coding:utf-8
# import datetime
import requests
import os
import sys
from lxml import etree
import codecs class Spider:
def __init__(self):
self.headers = {}
self.headers['User_Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'
self.headers['Referer'] = 'http://www.mzitu.com/all/' def crawl(self, root_url):
html_text = requests.get(root_url,headers=self.headers).text
html_tree = etree.HTML(html_text)
groups = html_tree.xpath("//div[@class='main-content']//ul[@class='archives']//a")
count = 0
print "开始抓取:"
for group in groups:
title = group.text
groupUrl = group.get('href')
print "正在抓取组图:"+title
dirpath = self.makDir(title) #获取标题,并以标题为名字创建文件夹
self.getGroup(groupUrl,dirpath) #
count = count+1
if count>=5:
print "抓取完成……"
os._exit(0) def makDir(self,dirname):
dirpath = os.path.join(u'E:\学习资料',dirname)
if not os.path.exists(dirpath):
os.makedirs(dirpath)
return dirpath def getGroup(self,groupUrl,dirpath):
self.headers['Referer'] = groupUrl
html_text = requests.get(groupUrl, headers=self.headers).text
html_tree = etree.HTML(html_text)
maxPage = html_tree.xpath("//div[@class='pagenavi']//span")[-2].text #获取改组图的张数
for page in range(1,int(maxPage)+1): #获取每一张图的所在页面
pageUrl = groupUrl + '/' + str(page) #拼接页面url
self.getPage(pageUrl,page,dirpath) #访问该页面 def getPage(self, pageUrl,page,dirpath):
self.headers['Referer'] = pageUrl
page_text = requests.get(pageUrl, headers=self.headers).text #请求该图所在的页面
page_tree = etree.HTML(page_text)
imageurl = page_tree.xpath("//div[@class='main-image']//img")[0].get('src') #获取图片url
image = requests.get(imageurl, headers=self.headers).content #请求获取图片
self.saveImage(image,page,dirpath) def saveImage(self,image,page,dirpath):
imagepath = os.path.join(dirpath, str(page) + u'.jpg')
file = codecs.open(imagepath, 'wb')
file.write(image)
file.close() if __name__ == '__main__':
reload(sys)
sys.setdefaultencoding('utf-8')
Mzitu = Spider()
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. ArcGIS教程:面积制表

    摘要 计算两个数据集之间交叉制表的区域并输出表. 插图 使用方法 · 区域定义为输入中具有同样值的全部区.各区无需相连. 栅格和要素数据集都可用于区域输入. · 假设区域输入和类输入均为具有同样分辨率 ...

  2. 利用 LeakCanary 来检查 Android 内存泄漏

    前言 你被概率性的 OOM 困扰么?有时候,OOM 像幽灵一样,挥之不去,可真想把它揪出来时,又捉之不着.或许,是时候用 LeakCanary 来诊断一下了.它是一个用来检查 Android 下内存泄 ...

  3. 将ActiveX控件标记为安全

    參考网页 http://msdn.microsoft.com/en-us/library/aa751977(v=vs.85).aspx http://support.microsoft.com/kb/ ...

  4. PHP之面向对象学习

    1.类 Class lio{ Public Protect Private Function __constructor(){} } 2.类的实例化 <? php class lio{ //定义 ...

  5. Java String 常用函数

    1>获取  1.1:字符串中包含的字符数,也就是字符串的长度.   int length():获取长度  1.2:根据位置获取位置上某个字符.   char charAt(int index) ...

  6. 彻底解决zend studio 下 assignment in condition警告

    最近在mac系统下安装zend studio作为php开发工具,把以前的代码导入,发现项目中有很多 “assignment in condition”的警告,造成原因是在条件判断的if.while中使 ...

  7. 【转】AngularJs 弹出框 model(模态框)

    原文转至 http://blog.csdn.net/violet_day/article/details/17170585 $modal是一个可以迅速创建模态窗口的服务,创建部分页,控制器,并关联他们 ...

  8. js中比較好的继承方式

    前面说到了原型和原型链,今天就来说说在面向对象中比較好的继承方式吧.先来看看两种基础的继承方式: 一.构造函数型 function People(name) { this.name=name; } P ...

  9. Process Stats:了解你的APP怎样使用内存

    原文地址:http://android-developers.blogspot.com/2014/01/process-stats-understanding-how-your.html?m=1 原作 ...

  10. System.DateTime.Now.ToString()的一些用法

    日期处理函数    //2007年4月24日    this.TextBox6.Text = System.DateTime.Now.ToString("D");    //200 ...