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

如何使用python来;“发送”;数据(图像)到ImageBam.com,python,urllib2,mechanize,multipartform-data,Python,Urllib2,Mechanize,Multipartform Data,我读过很多关于multipart/forms、mechanize和twill的书,但我不知道如何实现代码 首先,我试着在上面填表格 www.imagebam.com/basic upload 我可以填写表格,但即使我提交了数据也不能发送 在查看了上面页面的源代码后,我意识到我需要做的就是将正确内容类型的数据“发布”到页面(如果我错了,请纠正我) 直接 我试着使用poster.py,但无法理解这些东西是如何工作的。我可以使用mechanize和twill,但我觉得这比简单的表单发布更复杂,所以我

我读过很多关于multipart/forms、mechanize和twill的书,但我不知道如何实现代码

首先,我试着在上面填表格

www.imagebam.com/basic upload

我可以填写表格,但即使我提交了数据也不能发送

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

直接

我试着使用poster.py,但无法理解这些东西是如何工作的。我可以使用mechanize和twill,但我觉得这比简单的表单发布更复杂,所以我有点结巴

所以我的问题,

-如何使用poster.py(或用户创建的多部分表单类)将图像上载到imagebam.com


-或任何其他替代解决方案:)机械化不是执行此任务的正确工具

用python实现更健壮


示例在PHP/curl中,将它们转换为python/urllib2应该很简单。

不要完全依赖第三方库,如mechanize。或者用python实现它的官方api 或者看看这个在pyqt4中开发的项目,上传图像,然后尝试自己实现。

是的!我做到了。我曾经

代码如下:

>>> 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()
>>来自poster.encode导入多部分\u encode
>>>从poster.streaminghttp导入寄存器
>>>导入urllib2
>>>寄存器_openers()
>>>datagen,headers=multipart_encode({“file[]”):open(“D:\hedef\myfile.jpg”,“rb”),“content_type”:“1”,“thumb_size”:“350”})
>>>请求=urllib2。请求(“http://www.imagebam.com/sys/upload/save,datagen,标题)
>>>打印urlib2.urlopen(请求).read()
现在我需要做的就是使用BeautifulSoup来显示缩略图代码:)

谢谢你的评论:)我通过使用海报模块解决了这个问题:)谢谢你的评论:)我发现imageban api很难理解,因为我对“oatuh”的东西一无所知。我使用poster.py解决了这个问题:)
>>> 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()