如果我知道内容将是一个字符串,那么在Python中使用HTTP GET的最快方法是什么?我正在搜索文档中的快速单行,如:
contents = url.get("http://example.com/foo/bar")
但我使用Google找到的所有内容都是 httplib
和 urllib
- 我无法在这些库中找到快捷方式 .
标准Python 2.5是否有如上所述的某种形式的快捷方式,还是应该编写函数 url_get
?
- 我宁愿不将shell的输出捕获到
wget
或curl
.
10 回答
theller的wget解决方案非常有用,但是,我发现它并没有打印出整个下载过程中的进度 . 如果在reporthook中的print语句后添加一行,这是完美的 .
这是Python中的wget脚本:
如果你想让httplib2的解决方案成为oneliner考虑实例化匿名Http对象
看看httplib2,它旁边有许多非常有用的功能 - 提供你想要的 .
其中content将是响应主体(作为字符串),resp将包含状态和响应头 .
它不包含在标准的python安装中(但它只需要标准的python),但它绝对值得一试 .
如果您专门使用HTTP API,还有更方便的选择,例如Nap .
例如,以下是自2014年5月1日起如何从Github获取要点:
更多例子:https://github.com/kimmobrunfeldt/nap#examples
没有进一步必要的导入,这个解决方案(对我来说)也有效 - 也可以使用https
在 Headers 信息中未指定"User-Agent"时,我常常难以抓取内容 . 然后通常会使用以下内容取消请求:
urllib2.HTTPError: HTTP Error 403: Forbidden
或urllib.error.HTTPError: HTTP Error 403: Forbidden
.您可以使用名为requests的库 .
这很容易 . 然后你可以这样做:
How to also send headers
Python 3:
Python 2:
优秀的解决方案Xuan,Theller .
为了使用python 3进行以下更改
此外,您输入的URL前面应该有一个“http://”,否则会返回一个未知的url类型错误 .
Python 2.x:
Python 3.x:
urllib.request和read的文档 .
那个怎么样?