Python爬蟲功能(爬取網頁圖片)

  週五跟着蟲師的博客學習了一下Python爬蟲(爬取網頁圖片),而後到下班還沒運行起來,後面請教博客底下留言板裏的童鞋,是由於版本問題致使,蟲師用的2.7版本,我用的是版本3,後面照着熱心的網友寫的修改了一下,本覺得會好,而後仍是沒能跑起來,最終在週六的晚上在我同事的耐心指導下,因爲幾個空格問題,終於給運行成功了……(注:原諒小白因爲各類語法,空格不熟悉等問題形成的這種低級錯誤),因此就想寫進博客方便之後本身查看和更好的幫助其餘跟我同樣剛學習的Python的同窗。html


版本:Python3
開發工具:pycharm 
注:若是是使用Python2的童鞋能夠借鑑測試大牛蟲師的博客:  http://www.cnblogs.com/fnng/p/3576154.html#comment_tip
import urllib.request
import re
import chardet

def getHtml(url):
    page=urllib.request.urlopen(url)
    html =page.read()
    return html
def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre=re.compile(reg)
    encode_type=chardet.detect(html)
    html=html.decode(encode_type['encoding'])
    imglist=re.findall(imgre,html)
    x=0
    for imgurl in imglist:
        urllib.request.urlretrieve(imgurl,'%s.jpg' %x)
        x+=1
    return imglist
html=getHtml("http://tieba.baidu.com/p/2460150866")
print(getImg(html))
1、導入模塊說明
urllib.request:獲取web頁面數據 re:正則表達式模塊,用於後面代碼中提取圖片數據 chardet:用來識別編碼模塊
2、函數說明
第一個getHTML函數用於獲取web數據。
urllib.open()方法用於打開一個URL地址;
read()方法用於讀取URL上的數據,向getHtml()函數傳遞一個網址,並把整個頁面下載下來。執行程序就會把整個網頁打印輸出。
返回一個html。
第二個getImg函數用於在獲取的整個頁面中篩選須要的圖片鏈接。
reg正則表達式用於提取網頁中包含.jpg的圖片
re.compile 將正則表達式轉換爲模式對象,能夠實現更有效率的匹配
chardet用來識別編碼,encode方法再將此編碼轉換成字符串
re.findall() 方法讀取html 中包含 imgre(正則表達式)的數據。
第三個for循環用於獲取網頁中的圖片。
for循環對獲取的圖片鏈接進行遍歷,爲了使圖片的文件名看上去更規範,對其進行重命名,命名規則經過x變量加1。
urllib.urlretrieve()方法,直接將遠程數據下載到本地,保存的位置默認爲程序的存放目錄
程序運行完成,將在存在程序目錄下看到下載到本地的文件。

但願能對你們有幫助~~~web

相關文章
相關標籤/搜索