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 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
python实现红包裂变算法
Feb 16 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
python的变量与赋值详细分析
Nov 08 Python
python使用xslt提取网页数据的方法
Feb 23 Python
python 从csv读数据到mysql的实例
Jun 21 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
你需要学会的8个Python列表技巧
Jun 24 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 Python
Python读写Excel表格的方法
Mar 02 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留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
Python pandas常用函数详解
2018/02/07 Python
pycharm 安装JPype的教程
2019/08/08 Python
python如何查看安装了的模块
2020/06/23 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
英国在线花园中心:You Garden
2018/06/03 全球购物
中学生自我鉴定
2014/02/04 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
英文演讲稿
2014/05/15 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
授权收款委托书范本
2014/10/10 职场文书
法定代表人免职证明
2015/06/24 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL