首页 > 编程 > Python > 正文

python爬取NUS-WIDE数据库图片

2020-01-04 17:23:55
字体:
来源:转载
供稿:网友

实验室需要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模块主要包含了正则表达式import 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'  #正则表达式,得到图片地址  imgre = re.compile(reg)   #re.compile() 可以把正则表达式编译成一个正则表达式对象.  imglist = re.findall(imgre,html)   #re.findall() 方法读取html 中包含 imgre(正则表达式)的  数据  #把筛选的图片地址通过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)

 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表