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解析xml文件操作实例
Oct 05 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
详解python中的hashlib模块的使用
Apr 22 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
python中如何使用insert函数
Jan 09 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
python实现超级马里奥
Mar 18 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
Python调用jar包方法实现过程解析
Aug 11 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
第二节--PHP5 的对象模型
2006/11/16 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
[51:34]Ti4主赛事胜者组 DK vs EG 2
2014/07/19 DOTA
下载给定网页上图片的方法
2014/02/18 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
分享vim python缩进等一些配置
2018/07/02 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
商务英语专业求职信范文
2014/01/28 职场文书
学习张林森心得体会
2014/09/10 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
个人原因辞职信模板
2015/05/13 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书