python - 使用python快速扩展缩短的URL

标签 python urllib2 url-shortener urlopen

我正在编写 Python 代码来扩展从 Twitter 获取的缩短的 URL。我已获取所有 URL 并将它们存储在一个由换行符分隔的文本文件中。

目前我正在使用:

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

扩展它们。

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

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

最佳答案

我怀疑问题在于网络调用速度很慢并且 urllib 会阻塞,直到得到响应。因此,举例来说,假设需要 200 毫秒才能从 URL 缩短服务获得响应,那么使用 urllib 每秒只能解析 5 个 URL。但是,如果您使用异步库,您应该能够在获得第一个答案之前发送大量请求。然后,当响应返回到您的代码时,将对其进行处理。这应该会显着提高您的吞吐量。有一些针对此类事情的 Python 库(Twisted、gevent 等),因此您可能只想在 Google 上搜索“Python async Rest”。

您也可以尝试使用大量线程来执行此操作(我认为 urllib2 在等待响应时会释放 GIL,但不确定)。这不会像异步那么快,但仍然应该加快速度。

这两种解决方案都引入了相当多的复杂性,但如果您想快速......

关于python - 使用python快速扩展缩短的URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223421/

相关文章:

python - 获取调用该函数的文件的绝对路径

python - 将特定维度的对角线设置为 1 的最佳方法是什么?

python - 请求异常.MissingSchema : Invalid URL Python API Get request

php - 在 PHP 或 JS 中扩展缩短的 URL(如 Bitly、Tinyurl)以查找原始 URL 的最佳方法是什么?

.net - Twitter 害怕我的冗长网址 - 必须缩短它! [C#]

python - 使用 value_counts() 查找 pandas 中的类准确性

python django API身份验证发布请求 - 输出变量在浏览器中显示json字符串,但在打印时不显示

Python- Urllib2 : [Errno 54] Connection reset by peer

php - POST 数据发送并将 URL 更改为相同

Python多线程爬虫