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中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
python和ruby,我选谁?
Sep 13 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
Python中的Cookie模块如何使用
Jun 04 Python
Python实现粒子群算法的示例
Feb 14 Python
python模块内置属性概念及实例
Feb 18 Python
yolov5返回坐标的方法实例
Mar 17 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
js 字符串操作函数
2009/07/25 Javascript
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
妙用Jquery的val()方法
2012/06/27 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
ECMAScript6快速入手攻略
2016/07/18 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
python爬虫常用的模块分析
2014/08/29 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
医药工作者的求职信范文
2013/09/21 职场文书
物流管理专业大学生自荐信
2013/10/04 职场文书
销售心得体会
2014/01/02 职场文书
产品质量保证书
2014/04/29 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
学历证明范文
2015/06/16 职场文书
交通安全学习心得体会
2016/01/18 职场文书
Python实现简繁体转换
2021/06/07 Python