在咱們平常上網瀏覽網頁的時候,常常會看到一些好看的圖片,咱們就但願把這些圖片保存下載,或者用戶用來作桌面壁紙,或者用來作設計的素材。html
咱們最常規的作法就是經過鼠標右鍵,選擇另存爲。但有些圖片鼠標右鍵的時候並無另存爲選項,還有辦法就經過就是經過截圖工具截取下來,但這樣就下降圖片的清晰度。好吧~!其實你很厲害的,右鍵查看頁面源代碼。python
咱們能夠經過python 來實現這樣一個簡單的爬蟲功能,把咱們想要的代碼爬取到本地。下面就看看如何使用python來實現這樣一個功能web
1.新建一個文檔,擴展名爲.py 如:getjpg.py正則表達式
2.先獲取整個網頁的信息, url爲網頁路徑函數
1 #coding=utf-8 2 import urllib 3 import re 4 5 def getHtml(url): 6 page = urllib.urlopen(url) 7 html = page.read() 8 return html
Urllib 模塊提供了讀取web頁面數據的接口,咱們能夠像讀取本地文件同樣讀取www和ftp上的數據。urllib.urlopen()方法用於打開一個URL地址。
read()方法用於讀取URL上的數據,向getHtml()函數傳遞一個網址,並把整個頁面下載下來。執行程序就會把整個網頁打印輸出
![](http://static.javashuo.com/static/loading.gif)
可使用firebug獲取圖片地址
1 #coding=utf-8 2 import urllib 3 import re 4 def getHtml(url): 5 page = urllib.urlopen(url) 6 html = page.read() 7 return html 8 9 html = getHtml("http://baike.baidu.com/link?url=DU89hYfVcuSP0H4McaP9eQtb3SEFe2uRoMWbvj0n_Z5bNFxkFuYqN69wgFIeRbLSazXe96pOBJf9hF1ZsreOCa") 10 print html
執行這段代碼能夠輸出這個網頁的全部源代碼工具
3.建立了getImg()函數,用於在獲取的整個頁面中篩選須要的圖片鏈接,修改代碼url
1 #coding=utf-8 2 import urllib 3 import re 4 5 def getHtml(url): 6 page = urllib.urlopen(url) 7 html = page.read() 8 return html 9 10 def getImg(html): 11 reg = r'src="(.+?\.jpg)"' #jpg 圖片路徑格式 12 imgre = re.compile(reg) #re模塊主要包含了正則表達式,re.compile() 能夠把正則表達式編譯成一個正則表達式對象. 13 imglist = re.findall(imgre,html) #re.findall() 方法讀取html 中包含 imgre(正則表達式)的數據.
20 html = getHtml("http://baike.baidu.com/link?url=DU89hYfVcuSP0H4McaP9eQtb3SEFe2uRoMWbvj0n_Z5bNFxkFuYqN69wgFIeRbLSazXe96pOBJf9hF1ZsreOCa") 21 22 print getImg(html)
運行腳本將獲得整個頁面中包含圖片的URL地址. spa
4.將頁面篩選的數據保存到本地設計
把篩選的圖片地址經過for循環遍歷並保存到本地,代碼以下:code
1 #coding=utf-8 2 import urllib 3 import re 4 def getHtml(url): 5 page = urllib.urlopen(url) 6 html = page.read() 7 return html 8 9 def getImg(html): 10 reg = r'src="(.+?\.jpg)"' 11 imgre = re.compile(reg) 12 imglist = re.findall(imgre,html) 13 x = 0 14 for imgurl in imglist: 15 urllib.urlretrieve(imgurl,'d://%s.jpg' % x) 16 x+=1 17 18 html = getHtml("http://baike.baidu.com/link?url=DU89hYfVcuSP0H4McaP9eQtb3SEFe2uRoMWbvj0n_Z5bNFxkFuYqN69wgFIeRbLSazXe96pOBJf9hF1ZsreOCa") 19 20 print getImg(html)
這裏的核心是用到了urllib.urlretrieve()方法,直接將遠程數據下載到本地。
經過一個for循環對獲取的圖片鏈接進行遍歷,爲了使圖片的文件名看上去更規範,對其進行重命名,命名規則經過x變量加1(0.jpg ,1.jpg ...)。保存的位置默認爲程序的存放目錄。
程序運行完成,將在目錄下看到下載到本地的文件。 下面即爬到的圖片
還有一點注意的,(必須已安裝python,環境變量也要註冊)運行python腳本時,開始菜單--》 運行--》cmd 使用cd 命令找到腳本所在路徑,而後輸入 python getjpg.py 回車,便可輸出