如何用Python向ImageBam.com“发送”数据(图片)?
我读了很多关于多部分表单、mechanize和twill的资料,但就是找不到怎么写代码的办法。
使用MultipartPostHandler通过Python提交表单数据
我首先尝试在
www.imagebam.com/basic-upload
上填写表单。
我可以填写表单,但即使我点击提交,也无法真正发送数据。
在查看了上面页面的源代码后,我意识到我需要做的就是以正确的内容类型将数据“发布”到页面上(如果我错了请纠正我)。
http://www.imagebam.com/sys/upload/save
直接这样做……
我尝试使用poster.py,但就是搞不懂这个东西是怎么工作的。我对mechanize和twill有一点了解,但我觉得这比简单的表单提交要复杂得多,所以我卡住了。
所以我有几个问题:
- 我怎么才能使用poster.py(或者用户创建的multipartform类)将图片上传到imagebam.com?
- 或者有没有其他的解决方案呢? :)
3 个回答
0
Mechanize这个工具不太适合这个任务。
用Python实现http://code.google.com/p/imagebam-api/会更稳妥。
这些例子是用PHP和curl写的,把它们转换成Python和urllib2应该很简单。
0
不要完全依赖像 mechanize 这样的第三方库。你可以在 Python 中使用它的官方接口,具体可以查看这个 ImageBam API,或者看看这个用 pyqt4 开发的项目 pymguploader,它可以用来上传图片,然后你可以尝试自己实现类似的功能。
0
没错!我成功了。我用了 这个问题里的内容。
下面是我的代码:
>>> 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来获取缩略图的代码就可以了 :)