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中type的构造函数参数含义说明
Jun 21 Python
使用Python的PIL模块来进行图片对比
Feb 18 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
May 25 Python
python 性能优化方法小结
Mar 31 Python
详解Python中for循环是如何工作的
Jun 30 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
利用python将pdf输出为txt的实例讲解
Apr 23 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
django解决跨域请求的问题详解
Jan 20 Python
深入浅析python的第三方库pandas
Feb 13 Python
Django admin组件的使用
Oct 24 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
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
html下载本地
2006/06/19 Javascript
用nodejs写的一个简单项目打包工具
2013/05/11 NodeJs
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
python爬取个性签名的方法
2018/06/17 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
通过cmd进入python的步骤
2020/06/16 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
酒店管理求职信
2014/06/09 职场文书
教书育人演讲稿
2014/09/11 职场文书
高中班主任评语
2014/12/30 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
Python Numpy库的超详细教程
2022/04/06 Python