Python實(shí)現(xiàn)簡(jiǎn)單網(wǎng)頁(yè)圖片抓取完整代碼實(shí)例
利用python抓取網(wǎng)絡(luò)圖片的步驟是:
1、根據(jù)給定的網(wǎng)址獲取網(wǎng)頁(yè)源代碼
2、利用正則表達(dá)式把源代碼中的圖片地址過(guò)濾出來(lái)
3、根據(jù)過(guò)濾出來(lái)的圖片地址下載網(wǎng)絡(luò)圖片
以下是比較簡(jiǎn)單的一個(gè)抓取某一個(gè)百度貼吧網(wǎng)頁(yè)的圖片的實(shí)現(xiàn):
# -*- coding: utf-8 -*- # feimengjuan import re import urllib import urllib2 #抓取網(wǎng)頁(yè)圖片 #根據(jù)給定的網(wǎng)址來(lái)獲取網(wǎng)頁(yè)詳細(xì)信息,得到的html就是網(wǎng)頁(yè)的源代碼 def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): #利用正則表達(dá)式把源代碼中的圖片地址過(guò)濾出來(lái) reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imglist = imgre.findall(html) #表示在整個(gè)網(wǎng)頁(yè)中過(guò)濾出所有圖片的地址,放在imglist中 x = 0 for imgurl in imglist: urllib.urlretrieve(imgurl,'%s.jpg' %x) #打開(kāi)imglist中保存的圖片網(wǎng)址,并下載圖片保存在本地 x = x + 1 html = getHtml("http://tieba.baidu.com/p/2460150866")#獲取該網(wǎng)址網(wǎng)頁(yè)詳細(xì)信息,得到的html就是網(wǎng)頁(yè)的源代碼 getImg(html)#從網(wǎng)頁(yè)源代碼中分析并下載保存圖片
進(jìn)一步對(duì)代碼進(jìn)行了整理,在本地創(chuàng)建了一個(gè)“圖片”文件夾來(lái)保存圖片
# -*- coding: utf-8 -*- # feimengjuan import re import urllib import urllib2 import os #抓取網(wǎng)頁(yè)圖片 #根據(jù)給定的網(wǎng)址來(lái)獲取網(wǎng)頁(yè)詳細(xì)信息,得到的html就是網(wǎng)頁(yè)的源代碼 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 # 對(duì)于每張圖片地址,進(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)頁(yè)中所有圖片的地址 def getAllImg(html): #利用正則表達(dá)式把源代碼中的圖片地址過(guò)濾出來(lái) reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imglist = imgre.findall(html) #表示在整個(gè)網(wǎng)頁(yè)中過(guò)濾出所有圖片的地址,放在imglist中 return imglist #創(chuàng)建本地保存文件夾,并下載保存圖片 if __name__ == '__main__': html = getHtml("http://tieba.baidu.com/p/2460150866")#獲取該網(wǎng)址網(wǎng)頁(yè)詳細(xì)信息,得到的html就是網(wǎng)頁(yè)的源代碼 path = u'圖片' mkdir(path) #創(chuàng)建本地文件夾 imglist = getAllImg(html) #獲取圖片的地址列表 saveImages(imglist,path) # 保存圖片
結(jié)果在“圖片”文件夾下保存了幾十張圖片,如截圖:
總結(jié)
以上就是本文關(guān)于Python實(shí)現(xiàn)簡(jiǎn)單網(wǎng)頁(yè)圖片抓取完整代碼實(shí)例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
python爬蟲系列Selenium定向爬取虎撲籃球圖片詳解
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- Python爬蟲抓取指定網(wǎng)頁(yè)圖片代碼實(shí)例
- Python3簡(jiǎn)單爬蟲抓取網(wǎng)頁(yè)圖片代碼實(shí)例
- Python爬蟲之網(wǎng)頁(yè)圖片抓取的方法
- python抓取網(wǎng)頁(yè)中鏈接的靜態(tài)圖片
- Python之多線程爬蟲抓取網(wǎng)頁(yè)圖片的示例代碼
- Python使用正則表達(dá)式抓取網(wǎng)頁(yè)圖片的方法示例
- python抓取網(wǎng)頁(yè)中圖片并保存到本地
- 使用Python3編寫抓取網(wǎng)頁(yè)和只抓網(wǎng)頁(yè)圖片的腳本
- Python抓取網(wǎng)頁(yè)圖片難點(diǎn)分析
相關(guān)文章
解決python3 網(wǎng)絡(luò)請(qǐng)求路徑包含中文的問(wèn)題
今天小編就為大家分享一篇解決python3 網(wǎng)絡(luò)請(qǐng)求路徑包含中文的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05python3.9和pycharm的安裝教程并創(chuàng)建簡(jiǎn)單項(xiàng)目的步驟
這篇文章主要介紹了python3.9和pycharm的安裝教程并創(chuàng)建簡(jiǎn)單項(xiàng)目的步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-0230道python自動(dòng)化測(cè)試面試題與答案匯總
對(duì)于機(jī)器學(xué)習(xí)算法工程師而言,Python是不可或缺的語(yǔ)言,它的優(yōu)美與簡(jiǎn)潔令人無(wú)法自拔,下面這篇文章主要給大家介紹了關(guān)于30道python自動(dòng)化測(cè)試面試題與答案匯總的相關(guān)資料,需要的朋友可以參考下2023-03-03python 阿里云oss實(shí)現(xiàn)直傳簽名與回調(diào)驗(yàn)證的示例方法
這篇文章主要介紹了python 阿里云oss實(shí)現(xiàn)直傳簽名與回調(diào)驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03對(duì)python內(nèi)置map和six.moves.map的區(qū)別詳解
今天小編就為大家分享一篇對(duì)python內(nèi)置map和six.moves.map的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python基于opencv實(shí)現(xiàn)的人臉識(shí)別(適合初學(xué)者)
OpenCV是一個(gè)基于BSD許可開(kāi)源發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Python基于opencv實(shí)現(xiàn)的人臉識(shí)別,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),本文的教程非常適合初學(xué)者,需要的朋友可以參考下2022-03-03Python常見(jiàn)讀寫文件操作實(shí)例總結(jié)【文本、json、csv、pdf等】
這篇文章主要介紹了Python常見(jiàn)讀寫文件操作,結(jié)合實(shí)例形式總結(jié)分析了Python常見(jiàn)的各種文件讀寫操作,包括文本、json、csv、pdf等文件的讀寫與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-04-04