Python3爬蟲(2)多網頁爬取圖片
在上一篇小小短文中,在單個網頁中爬取了多個圖片。非常簡單,網址如下:
曹驥:Python3爬蟲(1)單網頁爬取圖片今天稍稍加大一點點難度。
多網頁爬取圖片: 難度 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]……第一千零四十六輯(第三頁) - 美女貼圖 - 華聲論壇成功了。
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空間動態爬蟲