如何用Python向ImageBam.com“发送”数据(图片)?

0 投票
3 回答
1809 浏览
提问于 2025-04-17 10:13

我读了很多关于多部分表单、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来获取缩略图的代码就可以了 :)

撰写回答