Python3爬蟲(2)多網頁爬取圖片

在上一篇小小短文中,在單個網頁中爬取了多個圖片。非常簡單,網址如下:

曹驥:Python3爬蟲(1)單網頁爬取圖片zhuanlan.zhihu.com圖標

今天稍稍加大一點點難度。

多網頁爬取圖片: 難度 0.5星

其實多網頁爬只需要將上一篇裡面的代碼稍稍改成自定義函數,再用個for循環,對多個網頁進行應用就行了。

步驟一: 變身自定義函數

1,下面這塊代碼可以改成一個小小的函數,將url和gbk這兩塊變成參數,這樣就能在很多情況下重複使用這個參數了。

def get_html(url, coding) file=urllib.request.urlopen(url) code=file.read() htmltext=code.decode(coding) return htmltext

來試試能不能用:

這裡找了一個有多頁圖片的帖子,侵刪:

網址是

㊣鄰家女孩……[眉眼盈盈 薩琳 120p]……第一千零四十六輯(第三頁) - 美女貼圖 - 華聲論壇bbs.voc.com.cn圖標

成功了。

2.

後半截的代碼也可以改成函數,可以把讀取的網頁內容,圖片網址的正則表達式和保存圖片的路徑都設置為參數。

def get_picture(htmltext, RE, path): pic=re.compile(RE) pics=pic.findall(htmltext) if not os.path.isdir(path): os.makedirs(path) x=1 for picture in pics: urllib.request.urlretrieve(picture, filename=path+"\"+"%d.jpg"%x) x=x+1

這裡將原來的filename=.....詳細路徑改成了filename=path+"\"+"%d.jpg"%x, 方便後期隨時修改保存路徑。

運行成功。

再在另外一個網址中嘗試一下應用函數:

步驟二:對多個網頁應用函數

在這低難度的文章裡面,多個網頁的網址都是類似的:

在這七個網頁中只有中間一點點的不同。

為了防止後面網頁爬的圖片和之前圖片相同名字,圖片被取代掉,可以稍稍對函數做一點點修改。

coding="gbk"RE="href="(.+?\.jpg)""path="E:\test"for i in np.arange(1,8): url="http://bbs.voc.com.cn/topic-8211633-%d-1.html"%i htmltext=get_html(url,coding) get_picture(htmltext,RE,path, i)

圖片可多了,你可以嘗試一下哦

完整代碼如下:

import urllib.requestimport reimport osimport numpy as npdef get_html(url, coding): file=urllib.request.urlopen(url) code=file.read() htmltext=code.decode(coding) return htmltextdef get_picture(htmltext, RE, path, i): pic=re.compile(RE) pics=pic.findall(htmltext) if not os.path.isdir(path): os.makedirs(path) x=1 for picture in pics: urllib.request.urlretrieve(picture, filename=path+"\"+"%d"%i+"%d.jpg"%x) x=x+1coding="gbk"RE="href="(.+?\.jpg)""path="E:\test"for i in np.arange(1,8): url="http://bbs.voc.com.cn/topic-8211633-%d-1.html"%i htmltext=get_html(url,coding) get_picture(htmltext,RE,path, i)

話說,爬點圖片太過於簡單,下一篇來爬點有用的文字信息吧。

以上。


推薦閱讀:

當大家都在討論金剛狼3的時候,他們到底在說些什麼~
爬蟲之常用的chrome技巧?
拿諾貝爾獎可以長壽?——從爬蟲到簡單數據分析
QQ空間動態爬蟲

TAG:python爬虫 | 网页爬虫 |