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统计cpu利用率的方法
Jun 02 Python
Python AES加密模块用法分析
May 22 Python
python生成九宫格图片
Nov 19 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
Python Web框架之Django框架Model基础详解
Aug 16 Python
python中的global关键字的使用方法
Aug 20 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
python的pyecharts绘制各种图表详细(附代码)
Nov 11 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
Dec 09 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
Python自省及反射原理实例详解
Jul 06 Python
运行Python编写的程序方法实例
Oct 21 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
Javascript的闭包
2009/12/31 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
js中less常用的方法小结
2017/08/09 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
angular2中使用第三方js库的实例
2018/02/26 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
Python中有趣在__call__函数
2015/06/21 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
美国网上花店:JustFlowers
2017/02/12 全球购物
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
求职简历推荐信范文
2013/12/02 职场文书
五好党支部事迹材料
2014/02/06 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
历史博物馆观后感
2015/06/05 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers