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使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
python 实现登录网页的操作方法
May 11 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
Python使用pandas对数据进行差分运算的方法
Dec 22 Python
python3去掉string中的标点符号方法
Jan 22 Python
Python实战之制作天气查询软件
May 14 Python
Python实现平行坐标图的绘制(plotly)方式
Nov 22 Python
使用Pyhton集合set()实现成果查漏的例子
Nov 24 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
python编写函数注意事项总结
Mar 29 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 rsa加密解密使用详解
2015/01/14 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
javascript 常用验证函数总结
2016/06/28 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python实现远程调用MetaSploit的方法
2014/08/22 Python
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
python中p-value的实现方式
2019/12/16 Python
python datetime处理时间小结
2020/04/16 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
应用服务器有那些
2012/01/19 面试题
机电工程专业应届生求职信
2013/10/03 职场文书
班组长安全职责
2014/01/05 职场文书
白血病募捐倡议书
2014/05/14 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS