我正在用 Python 编写一个相对简单的爬虫,但我想使用异步网络库来同时获取多个页面。我在他们的页面上看到了示例,但是当我应用显示的相同逻辑并适用于约 200 个网页时~1000/2000 url,性能下降。(大多数 url 来自不同的域,我已经将它们洗牌)。用 Eventlet 抓取这么多页面的最快方法是什么?我能得到什么速度?(速度如 fetches/s)
这是示例:
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):
return urllib2.urlopen(url).read()
pool = eventlet.GreenPool()
for body in pool.imap(fetch, urls):
print "got body", len(body)