【发布时间】:2011-12-07 09:33:24
【问题描述】:
伙计们!我目前正在使用使用以下 cURL 行的 API:
curl -vF "files[]=@file.zip" "http://s5.example.com/123"
我对使用pycurl等其他库不感兴趣,因为我真的只需要转换一两行。我真的很感谢你的帮助!
【问题讨论】:
标签: python curl urllib2 urllib
伙计们!我目前正在使用使用以下 cURL 行的 API:
curl -vF "files[]=@file.zip" "http://s5.example.com/123"
我对使用pycurl等其他库不感兴趣,因为我真的只需要转换一两行。我真的很感谢你的帮助!
【问题讨论】:
标签: python curl urllib2 urllib
你只需要urllib模块的urlopen方法..
语法: urllib2.urlopen(url[, data][, timeout])
data 是指定要发送到服务器的附加内容的字符串
例子:
import urllib
tlds = urllib.urlopen("http://data.iana.org/TLD/tlds-alpha-by-domain.txt").readlines()
这个例子展示了一个单行代码,通过从 iana.org 爬取所有 tlds 到一个名为 tlds 的列表中
urlopen方法的复杂操作/选项/参数可以查看官方文档:http://docs.python.org/library/urllib2.html
【讨论】:
此请求在文件上传字段中发布文件内容。 上传文件的 POST 请求的 http 正文很难组装 - 对于普通文本字段,只需将“data=”参数中的字典发送到 urllib2.urlopen 调用,字段就会被发布。
不过,文件上传需要发送一个复杂的 http 正文,并带有自定义的标头。 我不知道 urllib2 是否可以做到这一点 - 但我找到了一个关于如何使用 httplib 和 mimetypes(都是 Python 的 stdlib 的一部分)的示例 - 所以你可以选择示例代码并在你的项目中重用它:
http://code.activestate.com/recipes/146306-http-client-to-post-using-multipartform-data/
【讨论】: