python爬取NUS-WIDE数据库图片
实验室需要NUS-WIDE数据库中的原图,数据集的地址为http://lms.comp.nus.edu.sg/research/NUS-WIDE.htm 由于这个数据只给了每个图片的URL,所以需要一个小爬虫程序来爬取这些图片。在图片的下载过程中建议使用VPN。由于一些URL已经失效,所以会下载一些无效的图片。
#PYTHON2.7Ubuntu14.04 nuswide="$NUS-WIDE-urls_ROOT"#thelocationofyournus-wide-urls.txt imagepath="$IMAGE_ROOT"#pathofdatasetyouwanttodownloadin f=open(nuswide,'r') url=f.readlines() importre importurllib importos reg=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) foriinurl: filename=re.findall(location_re,i) direction=re.findall(direction_re,i) image=re.findall(image_re,i) ifimage: path=imagepath+filename[0] path_n=imagepath+direction[0] printpath_n ifos.path.exists(path_n): urllib.urlretrieve(image[1],path) else: os.makedirs(path_n) urllib.urlretrieve(image[1],path)
再给大家分享一个爬取百度贴吧图片的小爬虫(你懂得)
#coding=utf-8
#urllib模块提供了读取Web页面数据的接口
importurllib
#re模块主要包含了正则表达式
importre
#定义一个getHtml()函数
defgetHtml(url):
page=urllib.urlopen(url)#urllib.urlopen()方法用于打开一个URL地址
html=page.read()#read()方法用于读取URL上的数据
returnhtml
defgetImg(html):
reg=r'src="(.+?\.jpg)"pic_ext'#正则表达式,得到图片地址
imgre=re.compile(reg)#re.compile()可以把正则表达式编译成一个正则表达式对象.
imglist=re.findall(imgre,html)#re.findall()方法读取html中包含imgre(正则表达式)的数据
#把筛选的图片地址通过for循环遍历并保存到本地
#核心是urllib.urlretrieve()方法,直接将远程数据下载到本地,图片通过x依次递增命名
x=0
forimgurlinimglist:
urllib.urlretrieve(imgurl,'D:\E\%s.jpg'%x)
x+=1
html=getHtml("http://tieba.baidu.com/p/xxxx")
printgetImg(html)