python抓取网页图片示例(python爬虫)


Posted in Python onApril 27, 2014
#-*- encoding: utf-8 -*-
'''
Created on 2014-4-24
@author: Leon Wong
'''
import urllib2
import urllib
import re
import time
import os
import uuid
#获取二级页面url
def findUrl2(html):
    re1 = r'http://tuchong.com/\d+/\d+/|http://\w+(?<!photos).tuchong.com/\d+/'
    url2list = re.findall(re1,html)
    url2lstfltr = list(set(url2list))
    url2lstfltr.sort(key=url2list.index)
    #print url2lstfltr
    return url2lstfltr
#获取html文本
def getHtml(url):
    html = urllib2.urlopen(url).read().decode('utf-8')#解码为utf-8
    return html
#下载图片到本地
def download(html_page , pageNo):   
    #定义文件夹的名字
    x = time.localtime(time.time())
    foldername = str(x.__getattribute__("tm_year"))+"-"+str(x.__getattribute__("tm_mon"))+"-"+str(x.__getattribute__("tm_mday"))
    re2=r'http://photos.tuchong.com/.+/f/.+\.jpg'
    imglist=re.findall(re2,html_page)
    print imglist
    download_img=None
    for imgurl in imglist:
        picpath = 'D:\\TuChong\\%s\\%s'  % (foldername,str(pageNo))
        filename = str(uuid.uuid1())
        if not os.path.exists(picpath):
            os.makedirs(picpath)               
        target = picpath+"\\%s.jpg" % filename
        print "The photos location is:"+target
        download_img = urllib.urlretrieve(imgurl, target)#将图片下载到指定路径中
        time.sleep(1)
        print(imgurl)
    return download_img

# def callback(blocknum, blocksize, totalsize):
#     '''回调函数
#     @blocknum: 已经下载的数据块
#     @blocksize: 数据块的大小
#     @totalsize: 远程文件的大小
#     '''
#     print str(blocknum),str(blocksize),str(totalsize)
#     if blocknum * blocksize >= totalsize:
#         print '下载完成'
def quitit():
    print "Bye!"
    exit(0)
    
if __name__ == '__main__':
    print '''            *****************************************
            **    Welcome to Spider for TUCHONG    **
            **      Created on 2014-4-24           **
            **      @author: Leon Wong             **
            *****************************************'''
    pageNo = raw_input("Input the page number you want to scratch (1-100),please input 'quit' if you want to quit>")
    while not pageNo.isdigit() or int(pageNo) > 100 :
        if pageNo == 'quit':quitit()
        print "Param is invalid , please try again."
        pageNo = raw_input("Input the page number you want to scratch >")
    #针对图虫人像模块来爬取
    html = getHtml("http://tuchong.com/tags/%E4%BA%BA%E5%83%8F/?page="+str(pageNo))
    detllst = findUrl2(html)
    for detail in detllst:
        html2 = getHtml(detail)
        download(html2,pageNo)
    print "Finished."
Python 相关文章推荐
用Python设计一个经典小游戏
May 15 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
python XlsxWriter模块创建aexcel表格的实例讲解
May 03 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
python版百度语音识别功能
Jul 09 Python
python requests使用socks5的例子
Jul 25 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
Python移位密码、仿射变换解密实例代码
Jun 27 Python
python实现sublime3的less编译插件示例
Apr 27 #Python
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
Apr 26 #Python
Python设计模式之单例模式实例
Apr 26 #Python
Python设计模式之观察者模式实例
Apr 26 #Python
Python设计模式之代理模式实例
Apr 26 #Python
python中的列表推导浅析
Apr 26 #Python
Python中的Numpy入门教程
Apr 26 #Python
You might like
7个超级实用的PHP代码片段
2011/07/11 PHP
PHP容易忘记的知识点分享
2013/04/30 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
PHP面向对象详解(三)
2015/12/07 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
Python中文字符串截取问题
2015/06/15 Python
全面了解python字符串和字典
2016/07/07 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
Python如何合并多个字典或映射
2020/07/24 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
医学生求职自荐信
2013/10/25 职场文书
公务员检讨书
2014/11/01 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
教师节大会主持词
2015/07/06 职场文书
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
python小型的音频操作库mp3Play
2022/04/24 Python