如何使用python将数据(图像)“发送”到ImageBam.com

时间:2012-01-14 00:44:07

标签: python urllib2 mechanize multipartform-data

我已经阅读了很多关于multipart / forms,mechanize和twill的内容,但我无法找到如何实现代码。

Using MultipartPostHandler to POST form-data with Python

首先,我试图填写

上的表格

www.imagebam.com/basic-upload

我可以填写表格,但即使我提交()也无法发送数据。

在上面的页面查看源代码之后,我意识到我需要做的就是将正确的内容类型的数据“发布”到页面中(如果我错了请纠正我)

http://www.imagebam.com/sys/upload/save

直接..

我尝试使用poster.py,但无法理解这些东西是如何工作的。我可以使用机械化和斜纹一点,但我觉得因为这比简单的表格发布更复杂,我认为。

所以我的问题;

- 如何使用poster.py(或用户创建的多部分类)将图像上传到ima​​gebam.com

- 或任何其他替代解决方案:)

3 个答案:

答案 0 :(得分:0)

Mechanize不是完成任务的正确工具。

在python中实现http://code.google.com/p/imagebam-api/更加健壮。

示例是PHP / curl,将它们转换为python / urllib2应该是微不足道的。

答案 1 :(得分:0)

不要完全依赖机械化等第三方库。在python API ImageBam中实现其官方api 或者看一下在pyqt4 pymguploader中开发的这个项目来上传图片,而不是试图自己实现。

答案 2 :(得分:0)

是的!我做的。我用了 this question

以下是代码:

>>> from poster.encode import multipart_encode
>>> from poster.streaminghttp import register_openers
>>> import urllib2
>>> register_openers()
<urllib2.OpenerDirector instance at 0x02CDD828>
>>> datagen, headers = multipart_encode({"file[]": open("D:\hedef\myfile.jpg","rb"),"content_type":"1","thumb_size":"350"})
>>> request = urllib2.Request("http://www.imagebam.com/sys/upload/save", datagen, headers)
>>> print urllib2.urlopen(request).read()

现在我需要做的就是使用BeautifulSoup来完成缩略图代码:)