實驗室需要NUS-WIDE資料庫中的原圖,資料集的地址為http://lms.comp.nus.edu.sg/research/NUS-WIDE.htm 由於這個資料只給了每個圖片的URL,所以需要一個小爬蟲程式來爬取這些圖片。在圖片的下載過程中建議使用VPN。由於一些URL已經失效,所以會下載一些無效的圖片。
# PYTHON 2.7 Ubuntu 14.04nuswide = "$NUS-WIDE-urls_ROOT" #the location of your nus-wide-urls.txtimagepath = "$IMAGE_ROOT" # path of dataset you want to download inf = open(nuswide, 'r')url = f.readlines()import reimport urllibimport osreg = r"ImageData.+?jpg"location_re = re.compile(reg)reg = r"(ImageData.+?)/0"direction_re = re.compile(reg)reg = r"http.+?jpg"image_re = re.compile(reg)for i in url: filename = re.findall(location_re, i) direction = re.findall(direction_re, i) image = re.findall(image_re, i) if image: path = imagepath+filename[0] path_n = imagepath+direction[0] print path_n if os.path.exists(path_n): urllib.urlretrieve(image[1], path) else: os.makedirs(path_n) urllib.urlretrieve(image[1], path)
再給大家分享一個爬取百度貼吧圖片的小爬蟲(你懂得)
#coding=utf-8#urllib模組提供了讀取Web頁面資料的介面import urllib#re模組主要包含了Regeximport re#定義一個getHtml()函數def getHtml(url): page = urllib.urlopen(url) #urllib.urlopen()方法用於開啟一個URL地址 html = page.read() #read()方法用於讀取URL上的資料 return htmldef getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' #Regex,得到圖片地址 imgre = re.compile(reg) #re.compile() 可以把Regex編譯成一個Regex對象. imglist = re.findall(imgre,html) #re.findall() 方法讀取html 中包含 imgre(Regex)的 資料 #把篩選的圖片地址通過for迴圈遍曆並儲存到本地 #核心是urllib.urlretrieve()方法,直接將遠端資料下載到本地,圖片通過x依次遞增命名 x = 0 for imgurl in imglist: urllib.urlretrieve(imgurl,'D:\E\%s.jpg' % x) x+=1html = getHtml("http://tieba.baidu.com/p/xxxx")print getImg(html)