我想实现类似于此的功能http://www.tineye.com/parse?url=yahoo.com - 允许用户从任何网页上传图像。从网页上传图片
对我来说主要的问题是大量图像的网页需要花费太多时间。
我(使用卷曲或urllib的)根据未来计划在Django这样做:页面
抓斗HTML(花费大网页约1秒):
file = urllib.urlopen(requested_url) html_string = file.read()
使用HTML解析器(BeautifulSoup)解析它,查找img标签,并将所有src图像写入列表。 (大页面也需要大约1秒)
检查我列表中所有图像的大小,如果它们足够大,则返回它们的json响应(需要非常长的时间约15秒,当图像上有大约80个图像时网页)。下面是函数的代码:
def get_image_size(uri):
file = urllib.urlopen(uri)
p = ImageFile.Parser()
data = file.read(1024)
if not data:
return None
p.feed(data)
if p.image:
return p.image.size
file.close()
#not an image
return None
正如你所看到的,我不加载完整的图像来获得它的大小,只有它的1KB。但是当有很多图像时(我为每个找到的图像调用一次这个函数),它仍然需要太多时间。
那么我该如何让它工作得更快?
可能有没有办法对每张图片做出请求?
任何帮助将不胜感激。
谢谢!
什么只是检查在HTTP响应内容长度? – tmg 2011-04-09 19:22:36
是的,我考虑过它,但是我想只显示取决于宽度和高度的图像(例如宽度或高度超过100像素),并且仅知道内容长度很难做到。 – 2011-04-09 22:00:17