標籤:

運用python爬蟲批量抓取網頁圖片

前幾篇文章介紹了sql語句的使用,枯燥乏味沒有動力。這次的文章先穿插一個實戰的例子,運用python爬蟲批量抓取網頁圖片。

Python抓取網頁圖片的步驟大概為以下幾步:

1,抓取網頁

2,抓取圖片網址

3,下載圖片到本地

話不多少,先把代碼擼上來:

# -*- coding: utf-8 -*-n# chenlongnimport renimport urllibnimport urllib2nimport osnnn# 抓取網頁圖片nnn# 根據給定的網址來獲取網頁詳細信息,得到的html就是網頁的源代碼ndef getHtml(url):n page = urllib.urlopen(url)n html = page.read()nn return htmlnnn# 創建保存圖片的文件夾ndef mkdir(path):n path = path.strip()n # 判斷路徑是否存在n # 存在 Truen # 不存在 Flasen isExists = os.path.exists(path)n if not isExists:n print u新建了名字叫做, path, u的文件夾n # 創建目錄操作函數n os.makedirs(path)n return Truen else:n # 如果目錄存在則不創建,並提示目錄已經存在n print u名為, path, u的文件夾已經創建成功n return Falsenn # 輸入文件名,保存多張圖片nnndef saveImages(imglist, name):n number = 1n for imageURL in imglist:n splitPath = imageURL.split(.)n fTail = splitPath.pop()n if len(fTail) > 3:n fTail = jpgn fileName = name + "/" + str(number) + "." + fTailn # 對於每張圖片地址,進行保存n try:n u = urllib2.urlopen(imageURL)n data = u.read()n f = open(fileName, wb+)n f.write(data)n print u正在保存的一張圖片為, fileNamen f.close()n except urllib2.URLError as e:n print (e.reason)nn number += 1nnn # 獲取網頁中所有圖片的地址nnndef getAllImg(html):n # 利用正則表達式把源代碼中的圖片地址過濾出來n reg = rsrc="(.+?.jpg)" pic_extn imgre = re.compile(reg)n imglist = imgre.findall(html) # 表示在整個網頁中過濾出所有圖片的地址,放在imglist中n return imglistnnn# 創建本地保存文件夾,並下載保存圖片nif __name__ == __main__:n html = getHtml("【手機壁紙】p站搬圖_桌面吧_百度貼吧") # 獲取該網址網頁詳細信息,得到的html就是網頁的源代碼n path = u圖片n mkdir(path) # 創建本地文件夾n imglist = getAllImg(html) # 獲取圖片的地址列表n saveImages(imglist, path) # 保存圖片n

下圖為運行的結果:

再看看本地的圖片:

圖片已經都下載下來了。

本次抓取圖片相對爬蟲來說算是入門,以後會更多的應用到電商平台的數據抓取,幫助產品做需求分析和產品設計等工作。


推薦閱讀:

你真的了解Python中的日期時間處理嗎?
Python數據處理 II:數據的清洗(預處理)
python 3.4 下載了PIL第三方模塊,whl格式,如何安裝?

TAG:爬虫 | Python |