簡單爬蟲獲取網頁圖片

在咱們平常上網瀏覽網頁的時候,常常會看到一些好看的圖片,咱們就但願把這些圖片保存下載,或者用戶用來作桌面壁紙,或者用來作設計的素材。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頁面數據的接口,咱們能夠像讀取本地文件同樣讀取wwwftp上的數據。urllib.urlopen()方法用於打開一個URL地址。
read()方法用於讀取URL上的數據,向getHtml()函數傳遞一個網址,並把整個頁面下載下來。執行程序就會把整個網頁打印輸出

可使用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   回車,便可輸出

相關文章
相關標籤/搜索