python妹子图简单爬虫实例


Posted in Python onJuly 07, 2015

本文实例讲述了python妹子图简单爬虫实现方法。分享给大家供大家参考。具体如下:

#!/usr/bin/env python
#coding: utf-8
import urllib
import urllib2
import os
import re
import sys
#显示下载进度
def schedule(a,b,c):
  '''''
  a:已经下载的数据块
  b:数据块的大小
  c:远程文件的大小
  '''
  per = 100.0 * a * b / c
  if per > 100 :
    per = 100
  print '%.2f%%' % per
#获取html源码
def getHtml(url):
  page = urllib.urlopen(url)
  html = page.read()
  return html
#下载图片
def downloadImg(html, num, foldername):
  picpath = '%s' % (foldername) #下载到的本地目录
  if not os.path.exists(picpath): #路径不存在时创建一个
    os.makedirs(picpath)
  target = picpath+'/%s.jpg' % num
  myItems = re.findall('<p><a href="http:\/\/www.mzitu.com/.*?" ><img src="(.*?)" alt=".*?" /></a></p>',html,re.S)
  print 'Downloading image to location: ' + target
  urllib.urlretrieve(myItems[0], target, schedule)
#正则匹配分页
def findPage(html):
  myItems = re.findall('<span>(\d*)</span>', html, re.S)
  return myItems.pop()
#正则匹配列表
def findList(html):
  myItems = re.findall('<h2><a href="http://www.mzitu.com/(\d*)" title="(.*?)" target="_blank">.*?</a></h2>', html, re.S)
  return myItems
#总下载
def totalDownload(modelUrl):
  listHtml5 = getHtml(modelUrl)
  listContent = findList(listHtml)
  for list in listContent:
    html = getHtml('http://www.mzitu.com/' + str(list[0]))
    totalNum = findPage(html)
    for num in range(1, int(totalNum)+1):
      if num == 1:
        url = 'http://www.mzitu.com/' + str(list[0])
        html5 = getHtml(url)
        downloadImg(html5, str(num), str(list[1]))
      else:
        url = 'http://www.mzitu.com/' + str(list[0]) + '/'+str(num)
        html5 = getHtml(url)
        downloadImg(html5, str(num), str(list[1]))
if __name__ == '__main__':
  listHtml = getHtml('http://www.mzitu.com/model')
  #这是其中一个模块的url,可以添加不同的模块url从而达到整站爬取。
  for model in range(1, int(findPage(listHtml))+1):
    if model == 1:
      modelUrl = 'http://www.mzitu.com/model'
      totalDownload(modelUrl)
    else:
      modelUrl = 'http://www.mzitu.com/model/page/' + str(model)
      totalDownload(modelUrl)
  print "Download has finished."

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python正则表达式re模块详细介绍
May 29 Python
使用python实现接口的方法
Jul 07 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
python实现决策树
Dec 21 Python
python实现二叉查找树实例代码
Feb 08 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
python原类、类的创建过程与方法详解
Jul 19 Python
python中with语句结合上下文管理器操作详解
Dec 19 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
python连接mongodb集群方法详解
Feb 13 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
python操作redis的方法
Jul 07 #Python
python生成IP段的方法
Jul 07 #Python
Python的多态性实例分析
Jul 07 #Python
Python中的urllib模块使用详解
Jul 07 #Python
Python实现图像几何变换
Jul 06 #Python
Python统计日志中每个IP出现次数的方法
Jul 06 #Python
python统计日志ip访问数的方法
Jul 06 #Python
You might like
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
python数据结构之链表详解
2017/09/12 Python
python画折线图的程序
2018/07/26 Python
Python字符串对象实现原理详解
2019/07/01 Python
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
中间件分为哪几类
2012/03/14 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
走群众路线剖析材料
2014/10/09 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
小学生思想品德评语
2014/12/31 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA