计划如下:
我会下载一个网页,在DOM中解析图像列表,然后下载这些图像。之后,我将遍历这些图像,以确定哪个图像最适合代表该网页。
问题在于图像是逐个下载的,这可能需要相当长的时间。
如果有人能够指导我关于这个主题的方向,那将非常好。
非常感谢您的帮助。
我会下载一个网页,在DOM中解析图像列表,然后下载这些图像。之后,我将遍历这些图像,以确定哪个图像最适合代表该网页。
问题在于图像是逐个下载的,这可能需要相当长的时间。
如果有人能够指导我关于这个主题的方向,那将非常好。
非常感谢您的帮助。
加速网络爬虫基本上是Eventlet的主要用途。它非常快-我们有一个应用程序需要在几分钟内访问2,000,000个URL。它利用您系统上最快的事件接口(通常是epoll),并使用绿色线程(建立在协程之上,非常廉价)使编写变得容易。
这里是文档中的示例:
urls = ["http://www.google.com/intl/en_ALL/images/logo.gif",
"https://wiki.secondlife.com/w/images/secondlife.jpg",
"http://us.i1.yimg.com/us.yimg.com/i/ww/beta/y3.gif"]
import eventlet
from eventlet.green import urllib2
def fetch(url):
body = urllib2.urlopen(url).read()
return url, body
pool = eventlet.GreenPool()
for url, body in pool.imap(fetch, urls):
print "got body from", url, "of length", len(body)
这是开发更完整的爬虫的非常不错的起点。欢迎随时进入Freenode上的 #eventlet 寻求帮助。
[更新:我在文档中添加了一个更复杂的递归网络爬虫示例。我保证在提出这个问题之前就已经在进行中了,但这个问题最终确实激励我完成了它。 :)]