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 相关文章推荐
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python自动生产表情包
Mar 17 Python
Python入门之三角函数atan2()函数详解
Nov 08 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
Numpy中的mask的使用
Jul 21 Python
详解Django的CSRF认证实现
Oct 09 Python
pandas通过loc生成新的列方法
Nov 28 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 Python
Python实现自动签到脚本功能
Aug 20 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
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
jquery选择器简述
2015/08/31 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
Python判断直线和矩形是否相交的方法
2015/07/14 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
如何利用python读取micaps文件详解
2020/10/18 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
六查六看剖析材料
2014/02/15 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
安全施工标语
2014/06/07 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
财务人员入职担保书
2015/09/22 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android