如果我知道的内容,什么是对 HTTP GET 在 Python 中的最快方法将一个字符串?搜索这些文档的快速的单行式命令,如︰

contents = url.get("http://example.com/foo/bar")

但所有我可以找到使用 Google 是httpliburllib -,我不能在这些库中查找快捷方式。

标准的 Python 2.5 没有快捷方式上面,作为某种形式或应编写函数url_get?

  1. 我不愿意捕捉壳wgetcurl的输出.
2009-03-14 03:44:22
问题评论:

One-liners 并不一定更快。不 fetishize 代码高尔夫。您需要测量速度;未行代码。

uhm、 否 I googled 在这里因为我需要向我编写; 实验中添加一行未完成的产品。CPU 时间是很久更便宜比程序员时间 !

我发现我这里需要︰ stackoverflow.com/a/385411/1695680

回答:

Python 2.x:

import urllib2
urllib2.urlopen("http://example.com/foo/bar").read()

Python 3.x 版︰

import urllib.request
urllib.request.urlopen("http://example.com/foo/bar").read()

这是如何?

Does 一切得到清理可以很好地?它看起来我应该close后调用您的read这是有必要吗?

最好将其关闭,但如果您正在寻找快速的单行式命令,可以忽略它。:-)

同样的事情,怎么您的 worth,配合代替 urllib2 urllib (至少大多数的 url)。

Urlopen 返回的对象将被删除 (并定稿,其中关闭它) 时超出范围。由于 Cpython 引用计数,您可以依靠在read后立即发生此事。with块会更清晰和更安全的 Jython 等。

它不能与只使用 HTTPS 的网站。正常工作requests

您可以使用一个名为请求.

import requests
r = requests.get("http://example.com/foo/bar")

这是非常简单的。然后您可以执行如下所示︰

>>> print r.status_code
>>> print r.headers
>>> print r.content

Oneliner 如果您希望使用 httplib2 解决方案是考虑 instatntinating 匿名 Http 对象

import httplib2
resp, content = httplib2.Http().request("http://example.com/foo/bar")

httplib2,它的旁边有大量非常有用的功能-提供完全要看。

import httplib2

resp, content = httplib2.Http().request("http://example.com/foo/bar")

其中内容将响应正文 (字符串形式),并且响应将包含状态和响应标头。

它不是附带标准的 python 安装但 (但它只需要标准的 python),但它绝对值得签出。

wget theller 的解决方案是确实很有用,但是,我发现不能打印出整个下载操作的进度。如果 reporthook 中的打印语句之后添加一条线,它是完美。

import sys, urllib

def reporthook(a, b, c):
    print "% 3.1f%% of %d bytes
" % (min(100, float(a * b) / c * 100), c),
    sys.stdout.flush()
for url in sys.argv[1:]:
    i = url.rfind("/")
    file = url[i+1:]
    print url, "->", file
    urllib.urlretrieve(url, file, reporthook)
print
请输入您的翻译

What is the quickest way to HTTP GET in Python?

确认取消