python下载图片(3)

# -*- coding: utf-8 -*-"""some function by metaphy,2007-04-03,copyleftversion 0.2"""import urllib, httplib, urlparseimport reimport random

"""judge url exists or not,by others"""def httpExists(url):    host, path = urlparse.urlsplit(url)[1:3]    if ':' in host:        # port specified, try to use it        host, port = host.split(':', 1)        try:            port = int(port)        except ValueError:            print 'invalid port number %r' % (port,)            return False    else:        # no port specified, use default port        port = None    try:        connection = httplib.HTTPConnection(host, port=port)        connection.request("HEAD", path)        resp = connection.getresponse( )        if resp.status == 200:       # normal 'found' status            found = True        elif resp.status == 302:     # recurse on temporary redirect            found = httpExists(urlparse.urljoin(url,resp.getheader('location', '')))        else:                        # everything else -> not found            print "Status %d %s : %s" % (resp.status, resp.reason, url)            found = False    except Exception, e:        print e.__class__, e, url        found = False    return found

"""get html src,return lines[]"""def gGetHtmlLines(url):    if url==None : return    if not httpExists(url): return     try:        page = urllib.urlopen(url)           html = page.readlines()        page.close()        return html    except:        print "gGetHtmlLines() error!"        return"""get html src,return string"""def gGetHtml(url):    if url==None : return    if not httpExists(url): return     try:        page = urllib.urlopen(url)           html = page.read()        page.close()        return html    except:        print "gGetHtml() error!"        return

"""根据url获取文件名"""def gGetFileName(url):    if url==None: return None    if url=="" : return ""    arr=url.split("/")    return arr[len(arr)-1]

"""生成随机文件名"""def gRandFilename(type):    fname = ''    for i in range(16):        fname = fname + chr(random.randint(65,90))        fname = fname + chr(random.randint(48,57))    return fname + '.' + type"""根据url和其上的link,得到link的绝对地址"""def gGetAbslLink(url,link):    if url==None or link == None : return     if url=='' or link=='' : return url     addr = ''     if link[0] == '/' :         addr = gGetHttpAddr(url) + link     elif len(link)>3 and link[0:4] == 'http':        addr =  link     elif len(link)>2 and link[0:2] == '..':        addr = gGetHttpAddrFatherAssign(url,link)    else:        addr = gGetHttpAddrFather(url) + link 

return addr 

"""根据输入的lines,匹配正则表达式,返回list"""def gGetRegList(linesList,regx):    if linesList==None : return     rtnList=[]    for line in linesList:        matchs = re.search(regx, line, re.IGNORECASE)        if matchs!=None:            allGroups = matchs.groups()            for foundStr in allGroups:                if foundStr not in rtnList:                    rtnList.append(foundStr)    return rtnList"""根据url下载文件,文件名参数指定"""def gDownloadWithFilename(url,savePath,file):    #参数检查,现忽略    try:        urlopen=urllib.URLopener()        fp = urlopen.open(url)        data = fp.read()        fp.close()        file=open(savePath + file,'w+b')        file.write(data)        file.close()    except IOError:        print "download error!"+ url

"""根据url下载文件,文件名自动从url获取"""def gDownload(url,savePath):    #参数检查,现忽略    fileName = gGetFileName(url)    #fileName =gRandFilename('jpg')    gDownloadWithFilename(url,savePath,fileName)

"""根据某网页的url,下载该网页的jpg"""def gDownloadHtmlJpg(downloadUrl,savePath):    lines= gGetHtmlLines(downloadUrl)    regx = r"""src\s*="?(\S+)\.jpg"""    lists =gGetRegList(lines,regx)    if lists==None: return     for jpg in lists:        jpg = gGetAbslLink(downloadUrl,jpg) + '.jpg'        gDownload(jpg,savePath)   ###     print gGetFileName(jpg)"""根据url取主站地址"""def gGetHttpAddr(url):    if url== '' : return ''    arr=url.split("/")    return arr[0]+"//"+arr[2]"""根据url取上级目录"""def gGetHttpAddrFather(url):    if url=='' : return ''    arr=url.split("/")    addr = arr[0]+'//'+arr[2]+ '/'    if len(arr)-1>3 :        for i in range(3,len(arr)-1):            addr = addr + arr[i] + '/'    return addr

"""根据url和上级的link取link的绝对地址"""def gGetHttpAddrFatherAssign(url,link):    if url=='' : return ''    if link=='': return ''    linkArray=link.split("/")    urlArray = url.split("/")    partLink =''    partUrl = ''    for i in range(len(linkArray)):                if linkArray[i]=='..':             numOfFather = i + 1    #上级数        else:            partLink = partLink + '/'  + linkArray[i]    for i in range(len(urlArray)-1-numOfFather):        partUrl = partUrl + urlArray[i]         if i < len(urlArray)-1-numOfFather -1 :             partUrl = partUrl + '/'    return  partUrl + partLink

"""根据url获取其上的相关htm、html链接,返回list"""def gGetHtmlLink(url):    #参数检查,现忽略    rtnList=[]    lines=gGetHtmlLines(url)    regx = r"""href="?(\S+)\.htm"""    for link in gGetRegList(lines,regx):        link = gGetAbslLink(url,link) + '.htm'        if link not in rtnList:            rtnList.append(link)            print link    return rtnList

"""根据url,抓取其上的jpg和其链接htm上的jpg"""def gDownloadAllJpg(url,savePath):    #参数检查,现忽略    gDownloadHtmlJpg(url,savePath)    #抓取link上的jpg    links=gGetHtmlLink(url)    for link in links:        gDownloadHtmlJpg(link,savePath)

"""test"""def test():    u='http://www.gs.xinhuanet.com/news/2007-01/31/content_9188207_1.htm'    save='d:/tmp/'    print 'download pic from [' + u +']'    print 'save to [' +save+'] ...'    gDownloadHtmlJpg(u,save)    print "download finished"

test()
时间: 2024-08-04 01:34:45

python下载图片(3)的相关文章

python 下载 图片、音乐、视频 和 断点续传

参考: http://www.pythontab.com/html/2014/pythonjichu_0121/681.html 参考: http://blog.csdn.net/supercooly/article/details/51046561 参考: python编写断点续传下载软件 参考: http://blog.topspeedsnail.com/archives/8462 python下载文件的三种方法 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外

python下载图片出现IOError

问题描述 python下载图片出现IOError import urllib2 from BeautifulSoup import BeautifulSouppage = urllib2.urlopen('http://bbs.hupu.com/13608969.html') contents = page.read() soup = BeautifulSoup(contents)img=soup.findAll('img')print imgprint len(img)for myimg in

Python实现从订阅源下载图片的方法_python

本文实例讲述了Python实现从订阅源下载图片的方法.分享给大家供大家参考.具体如下: 这段代码是基于python 3.4实现的,和python2.X 比起来有了好多差别啊. 这是一个练习,数据源来自网易订阅.代码如下: 复制代码 代码如下: __author__ = 'Saint' import os import urllib.request import json from html.parser import HTMLParser # 从获取的网页内容筛选图片的内容 class MyHt

Python下载百度贴吧图片程序代码

   代码如下 复制代码 #!/usr/bin/env python #-*- coding: UTF-8 -*- import urllib,re,os def demo():     print "-----------------------------------------\n"     print u"      Python下载百度贴吧图片\n"     print "-------------------------------------

php正则匹配文章中的远程图片地址并下载图片至本地_php技巧

使用php的正则表达式来实现: $content = '这里是文章内容,这里插入一张图片测试 <img src="XXXXXXXXXXXXXXXXXXXX">'; $content = stripslashes ( $content ); $img_array = array (); // 匹配所有远程图片 preg_match_all ( "/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png

ios-IOS-存储下载图片的最佳途径

问题描述 IOS-存储下载图片的最佳途径 怎么样存储下载的图片能让我的应用可以随便调用图片.并且在任何情况下图片都不会被删除(比如空间不足). 请帮忙推荐一些,谢谢. 解决方案 你可以来这里看一下,这个数据库里有一些方法可以用. 解决方案二: [ NSHomeDirectory() stringByAppendingPathComponent:@"library"]

Objective C从远程url下载图片方法汇总

  本文给大家分享了2则使用Objective C从远程url下载图片的方法,都是个人项目中使用的,汇总下推荐给大家,有需要的小伙伴可以参考下. Objective C从远程url下载图片 ? 1 2 3 4 5 6 7 8 - (UIImage *) getImageFromURL: (NSString *)theURL { UIImage *theImage = NULL; NSString *imageFileName = [BT_strings getFileNameFromURL:th

通过PHP批量下载图片文件的方法

  近一直很忙,遇到一个手工活,需要下载一些远程的图片,一共一百多张,如果通过手工一张一张的保存,也太耗费时间了,于是上网google了一把,找到PHP批量下载图片文件的方法,原文是关于如何使用PHP批量下载CSS文件中的图片的文章.经过研究改写了一下就可以使用了,方便快捷多了. PHP批量下载图片文件代码: set_time_limit(0);//设置PHP超时时间 $imagesURLArray = array_unique($imagesURLArray ); foreach($image

猎豹浏览器如何批量下载图片

  1.打开猎豹浏览器点击左上角头像→猎豹应用市场(http://store.liebao.cn/) 2.搜索图片批量 3.点击"Fatkun图片批量下载"应用安装 4.打开所需要批量下载的图片页面 5.点击"Fatkun图片批量下载"图片进行图片批量查看(支持所有页面以及当前页面) 6.点击"保存图片"进行图片批量下载 7.弹出提示,需要关闭下载前询问每个文件的保存位置(点击猎豹浏览器点击左上角头像→设置→更多设置里关闭[下载前询问每个文件的保