Python實(shí)現(xiàn)簡單網(wǎng)頁圖片抓取完整代碼實(shí)例
利用python抓取網(wǎng)絡(luò)圖片的步驟是:
1、根據(jù)給定的網(wǎng)址獲取網(wǎng)頁源代碼
2、利用正則表達(dá)式把源代碼中的圖片地址過濾出來
3、根據(jù)過濾出來的圖片地址下載網(wǎng)絡(luò)圖片
以下是比較簡單的一個抓取某一個百度貼吧網(wǎng)頁的圖片的實(shí)現(xiàn):
# -*- coding: utf-8 -*- # feimengjuan import re import urllib import urllib2 #抓取網(wǎng)頁圖片 #根據(jù)給定的網(wǎng)址來獲取網(wǎng)頁詳細(xì)信息,得到的html就是網(wǎng)頁的源代碼 def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): #利用正則表達(dá)式把源代碼中的圖片地址過濾出來 reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imglist = imgre.findall(html) #表示在整個網(wǎng)頁中過濾出所有圖片的地址,放在imglist中 x = 0 for imgurl in imglist: urllib.urlretrieve(imgurl,'%s.jpg' %x) #打開imglist中保存的圖片網(wǎng)址,并下載圖片保存在本地 x = x + 1 html = getHtml("http://tieba.baidu.com/p/2460150866")#獲取該網(wǎng)址網(wǎng)頁詳細(xì)信息,得到的html就是網(wǎng)頁的源代碼 getImg(html)#從網(wǎng)頁源代碼中分析并下載保存圖片
進(jìn)一步對代碼進(jìn)行了整理,在本地創(chuàng)建了一個“圖片”文件夾來保存圖片
# -*- coding: utf-8 -*- # feimengjuan import re import urllib import urllib2 import os #抓取網(wǎng)頁圖片 #根據(jù)給定的網(wǎng)址來獲取網(wǎng)頁詳細(xì)信息,得到的html就是網(wǎng)頁的源代碼 def getHtml(url): page = urllib.urlopen(url) html = page.read() return html #創(chuàng)建保存圖片的文件夾 def mkdir(path): path = path.strip() # 判斷路徑是否存在 # 存在 True # 不存在 Flase isExists = os.path.exists(path) if not isExists: print u'新建了名字叫做',path,u'的文件夾' # 創(chuàng)建目錄操作函數(shù) os.makedirs(path) return True else: # 如果目錄存在則不創(chuàng)建,并提示目錄已經(jīng)存在 print u'名為',path,u'的文件夾已經(jīng)創(chuàng)建成功' return False # 輸入文件名,保存多張圖片 def saveImages(imglist,name): number = 1 for imageURL in imglist: splitPath = imageURL.split('.') fTail = splitPath.pop() if len(fTail) > 3: fTail = 'jpg' fileName = name + "/" + str(number) + "." + fTail # 對于每張圖片地址,進(jìn)行保存 try: u = urllib2.urlopen(imageURL) data = u.read() f = open(fileName,'wb+') f.write(data) print u'正在保存的一張圖片為',fileName f.close() except urllib2.URLError as e: print (e.reason) number += 1 #獲取網(wǎng)頁中所有圖片的地址 def getAllImg(html): #利用正則表達(dá)式把源代碼中的圖片地址過濾出來 reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imglist = imgre.findall(html) #表示在整個網(wǎng)頁中過濾出所有圖片的地址,放在imglist中 return imglist #創(chuàng)建本地保存文件夾,并下載保存圖片 if __name__ == '__main__': html = getHtml("http://tieba.baidu.com/p/2460150866")#獲取該網(wǎng)址網(wǎng)頁詳細(xì)信息,得到的html就是網(wǎng)頁的源代碼 path = u'圖片' mkdir(path) #創(chuàng)建本地文件夾 imglist = getAllImg(html) #獲取圖片的地址列表 saveImages(imglist,path) # 保存圖片
結(jié)果在“圖片”文件夾下保存了幾十張圖片,如截圖:
總結(jié)
以上就是本文關(guān)于Python實(shí)現(xiàn)簡單網(wǎng)頁圖片抓取完整代碼實(shí)例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
python爬蟲系列Selenium定向爬取虎撲籃球圖片詳解
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
解決python3 網(wǎng)絡(luò)請求路徑包含中文的問題
今天小編就為大家分享一篇解決python3 網(wǎng)絡(luò)請求路徑包含中文的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05python3.9和pycharm的安裝教程并創(chuàng)建簡單項(xiàng)目的步驟
這篇文章主要介紹了python3.9和pycharm的安裝教程并創(chuàng)建簡單項(xiàng)目的步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02python 阿里云oss實(shí)現(xiàn)直傳簽名與回調(diào)驗(yàn)證的示例方法
這篇文章主要介紹了python 阿里云oss實(shí)現(xiàn)直傳簽名與回調(diào)驗(yàn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03對python內(nèi)置map和six.moves.map的區(qū)別詳解
今天小編就為大家分享一篇對python內(nèi)置map和six.moves.map的區(qū)別詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python基于opencv實(shí)現(xiàn)的人臉識別(適合初學(xué)者)
OpenCV是一個基于BSD許可開源發(fā)行的跨平臺計(jì)算機(jī)視覺庫,下面這篇文章主要給大家介紹了關(guān)于Python基于opencv實(shí)現(xiàn)的人臉識別,文中通過實(shí)例代碼介紹的非常詳細(xì),本文的教程非常適合初學(xué)者,需要的朋友可以參考下2022-03-03Python常見讀寫文件操作實(shí)例總結(jié)【文本、json、csv、pdf等】
這篇文章主要介紹了Python常見讀寫文件操作,結(jié)合實(shí)例形式總結(jié)分析了Python常見的各種文件讀寫操作,包括文本、json、csv、pdf等文件的讀寫與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-04-04