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的内建模块collections的教程
Apr 28 Python
python re模块findall()函数实例解析
Jan 19 Python
Python smtplib实现发送邮件功能
May 22 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
python实现简单多人聊天室
Dec 11 Python
python修改txt文件中的某一项方法
Dec 29 Python
Python利用scapy实现ARP欺骗的方法
Jul 23 Python
简单了解Django应用app及分布式路由
Jul 24 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
PyTorch的Optimizer训练工具的实现
Aug 18 Python
python实现大学人员管理系统
Oct 25 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
php ios推送(代码)
2013/07/01 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
python线程锁(thread)学习示例
2013/12/04 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
Python Flask基础教程示例代码
2018/02/07 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
利用python实现汉诺塔游戏
2021/03/01 Python
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
外贸学院会计专业应届生求职信
2013/11/14 职场文书
大客户销售经理职责
2013/12/04 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
考研复习计划
2015/01/19 职场文书
工作失职检讨书范文
2015/05/05 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
公司年会开场白
2015/06/01 职场文书
十二生肖观后感
2015/06/12 职场文书
民事调解协议书
2016/03/21 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python