亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python抓取網頁中圖片并保存到本地

2020-01-04 17:55:17
字體:
來源:轉載
供稿:網友
本篇文章給大家介紹python抓取網頁中圖片并保存到本地,對python抓取網頁圖片相關知識感興趣的朋友一起學習吧
 

在上篇文章給大家分享PHP源碼批量抓取遠程網頁圖片并保存到本地的實現方法,感興趣的朋友可以點擊了解詳情。

#-*-coding:utf-8-*- import osimport uuidimport urllib2import cookielib'''獲取文件后綴名'''def get_file_extension(file):   return os.path.splitext(file)[1] '''創建文件目錄,并返回該目錄'''def mkdir(path):  # 去除左右兩邊的空格  path=path.strip()  # 去除尾部 /符號  path=path.rstrip("//")  if not os.path.exists(path):    os.makedirs(path)  return path'''自動生成一個唯一的字符串,固定長度為36'''def unique_str():  return str(uuid.uuid1())'''抓取網頁文件內容,保存到內存@url 欲抓取文件 ,path+filename'''def get_file(url):  try:    cj=cookielib.LWPCookieJar()    opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))    urllib2.install_opener(opener)    req=urllib2.Request(url)    operate=opener.open(req)    data=operate.read()    return data  except BaseException, e:    print e    return None'''保存文件到本地@path 本地路徑@file_name 文件名@data 文件內容'''def save_file(path, file_name, data):  if data == None:    return  mkdir(path)  if(not path.endswith("/")):    path=path+"/"  file=open(path+file_name, "wb")  file.write(data)  file.flush()  file.close()#獲取文件后綴名print get_file_extension("123.jpg");#創建文件目錄,并返回該目錄#print mkdir("d:/ljq")#自動生成一個唯一的字符串,固定長度為36print unique_str()url="http://qlogo1.store.qq.com/qzone/416501600/416501600/100?0";save_file("d:/ljq/", "123.jpg", get_file(url))

通過Python抓取指定Url中的圖片保存至本地

# *** encoding: utf-8 ***__author__='jiangyt'""" fetch images from specific urlv1.0""" import urllib, httplib, urlparse import re import random """judge url exists or not""" 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 Exception, e:     print "gGetHtmlLines() error! Exception ==>>" + e     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 Exception, e:     print "gGetHtml() error! Exception ==>>" + e     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, error:     print "DOWNLOAD %s ERROR!==>>%s" % (url, error)   except Exception, e:     print "Exception==>>" + e """根據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) # 'get the page source'   regx = r"""src/s*="?(/S+)/.jpg"""   lists =gGetRegList(lines,regx) #'get the links which match regular express'   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 main():   u='http://site.douban.com/196738/room/2462453/'#想要抓取圖片的地址  save='/root/python/tmp/' #圖片所要存放的目錄  print 'download pic from [' + u +']'   print 'save to [' +save+'] ...'   gDownloadHtmlJpg(u,save)   print "download finished" if __name__ == "__main__":  main()else:  print "called from intern."

以上代碼是小編給大家介紹的python抓取網頁中圖片并保存到本地的全部內容,希望大家喜歡。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
怡红院精品视频| 日本久久久久久| 亚洲福利在线看| 久久久国产精品亚洲一区| 久久久亚洲影院你懂的| 久久777国产线看观看精品| 亚洲国产精品va在线看黑人| 亚洲xxx大片| 国产视频精品va久久久久久| 亚洲欧洲xxxx| 欧美—级a级欧美特级ar全黄| 久久人体大胆视频| 色婷婷成人综合| 欧美日韩激情视频| 欧美日韩性生活视频| 亚洲欧美激情另类校园| 成人精品aaaa网站| 高清一区二区三区四区五区| 中文字幕av一区中文字幕天堂| 亚洲娇小xxxx欧美娇小| 亚洲日本欧美中文幕| 亚洲成人精品在线| 欧美日韩国产成人在线观看| 欧美精品中文字幕一区| 国产成人精品久久二区二区| 国产精品视频网| 亚洲一区av在线播放| 伊人久久久久久久久久| 久国内精品在线| 国产丝袜一区二区三区| 亚洲91精品在线| 国产脚交av在线一区二区| 国产亚洲视频在线| 亚洲图片在区色| 欧美激情久久久久久| 亚洲图片欧美午夜| 欧美午夜片在线免费观看| 欧美日韩亚洲高清| 亚洲成人教育av| 久热爱精品视频线路一| 午夜精品久久17c| 国产精品午夜一区二区欲梦| 日本精品免费一区二区三区| 69久久夜色精品国产69乱青草| 亚洲成人精品久久| 国产精品久久久久久久久久东京| 国产精品视频999| 国产成人黄色av| 国产精品久久一区| 国产精品视频xxxx| 中文字幕亚洲欧美一区二区三区| 亚洲欧美一区二区三区四区| 欧美精品精品精品精品免费| 色哟哟入口国产精品| 国产精品福利在线观看| 日韩美女视频中文字幕| 欧美韩国理论所午夜片917电影| 国产主播喷水一区二区| 亚洲精品mp4| 欧美日韩中文字幕综合视频| 91高清免费在线观看| 欧美国产在线电影| 亚洲美女性生活视频| 欧美日本国产在线| 欧美日韩国产成人高清视频| 国产精品99久久久久久久久久久久| 中文字幕久精品免费视频| 青青久久aⅴ北条麻妃| 国产日韩av高清| 国产精品视频男人的天堂| 精品视频在线观看日韩| 亚洲免费人成在线视频观看| 成人网欧美在线视频| 色偷偷噜噜噜亚洲男人的天堂| 久久久久久国产精品久久| 欧美与黑人午夜性猛交久久久| 在线视频欧美性高潮| 亚洲欧美日韩精品久久奇米色影视| 国内精品视频久久| 国产精品视频yy9099| 亚洲激情第一页| 成人免费福利视频| 日韩视频在线一区| 日本高清+成人网在线观看| 亚洲国产精品视频在线观看| 亚洲成人久久电影| 日韩精品免费在线| 国产精品一区电影| 国产网站欧美日韩免费精品在线观看| 精品久久中文字幕| 中文字幕日本欧美| 国产精品一区二区三区成人| 91亚洲精品久久久久久久久久久久| 久久国产精品电影| 亚洲欧美一区二区精品久久久| 国产91在线播放九色快色| 国产精品欧美激情在线播放| 成人免费网站在线观看| 久久精品男人天堂| 国产日韩欧美成人| 亚州欧美日韩中文视频| 精品爽片免费看久久| 97视频免费在线看| 欧洲成人免费aa| 日韩电影免费观看在线| 国产精品成人va在线观看| 亚洲三级黄色在线观看| 亚洲最新在线视频| 91在线观看免费观看| 日韩视频永久免费观看| 亚洲经典中文字幕| 97超碰国产精品女人人人爽| 日本成人精品在线| 国产欧美日韩精品丝袜高跟鞋| 国产精品欧美一区二区三区奶水| 精品福利在线看| 91免费人成网站在线观看18| 午夜免费久久久久| 国产欧美久久一区二区| 亚洲视频国产视频| 亚洲精品国产综合久久| 久久韩剧网电视剧| 欧美黑人一级爽快片淫片高清| 亚洲影院在线看| 海角国产乱辈乱精品视频| 久久99国产综合精品女同| 91欧美视频网站| 欧美日韩国产综合新一区| 久久艹在线视频| 国产日韩欧美在线播放| 久久久久久国产精品三级玉女聊斋| 丝袜情趣国产精品| 黄网动漫久久久| 亚洲第一免费网站| 欧美日韩国产成人高清视频| 久久99精品久久久久久琪琪| 亚洲片国产一区一级在线观看| 国产在线视频不卡| 国语自产精品视频在线看一大j8| 欧美国产日韩一区二区| 久久久久www| 国模精品视频一区二区三区| 日日狠狠久久偷偷四色综合免费| 日韩乱码在线视频| 69av成年福利视频| 亚洲国产精品久久久久秋霞蜜臀| 久久99亚洲精品| 97国产真实伦对白精彩视频8| 国产精品一区二区久久精品| 韩曰欧美视频免费观看| 国产精品成人在线| 欧美激情久久久| 最近2019中文免费高清视频观看www99| 成人精品一区二区三区电影免费| 亚洲精品欧美日韩| 日本久久中文字幕| 亚洲欧美激情四射在线日| 欧美性猛交丰臀xxxxx网站| 亚洲乱码一区av黑人高潮| 最近2019年好看中文字幕视频| 深夜精品寂寞黄网站在线观看| 大量国产精品视频| 一个人www欧美| 免费91麻豆精品国产自产在线观看|