2015-05-13 38 views
2

我正在编写Python代码来扩展从Twitter获取的缩短的URL。我已经提取了所有的URL并将它们存储在由换行符分隔的文本文件中。使用python快速扩展缩短的URL

目前我使用:

response = urllib2.urlopen(url) 
return response.url 

将其展开。

但是,urlopen()方法在扩展URL方面似乎不是很快。

我有大约540万个网址。有没有更快的方法来使用Python扩展它们?

+0

您是否按顺序执行请求? –

+1

是的,我按顺序执行请求。 –

+0

你想将一个缩短的网址转换为普通的网址? – Ajay

回答

4

我怀疑问题是网络调用速度慢,并且urllib阻止,直到它得到响应。例如,假设从URL缩短服务获取响应需要200ms,那么您将只能使用urllib解析每秒5个URL。但是,如果您使用异步库,在获得第一个答案之前,您应该能够发出大量请求。然后在回复您的代码时处理响应。这应该会显着增加您的吞吐量。这种类型的东西有一些Python库(Twisted,gevent等),所以你可能只想让Google为“Python异步休息”。你也可以尝试用很多线程来做到这一点(我认为urllib2会在等待响应时释放GIL,但不确定)。这不会像异步一样快,但仍应该加快一点。

这两种解决方案都会带来相当大的复杂性,但是如果您想要快速...

+2

我怀疑URL缩短服务器可能不太满意从单个IP地址发生这样的抖动并开始阻塞。谨防! – Spacedman