1

因此,我正在尝试制作一个脚本,该脚本将使用 RoboBrowser 为我自动将图像上传到 facebook,以浏览 mbasic.facebook.com 网站,并且在提交图像表单时出现一个奇怪的错误:

Traceback (most recent call last):
  File "C:\Users\Admin\OneDrive\Facebook Project\facebook.py", line 55, in <module>
browser.submit_form(form, submit=form["add_photo_done"])
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\robobrowser\browser.py", line 343, in submit_form
response = self.session.request(method, url, **send_args)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py", line 498, in request
prep = self.prepare_request(req)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py", line 441, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\models.py", line 312, in prepare
self.prepare_body(data, files, json)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\models.py", line 500, in prepare_body
(body, content_type) = self._encode_files(files, data)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\models.py", line 159, in _encode_files
fdata = fp.read()
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\encodings\cp1252.py", line 23, in decode
  return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 57: character maps to <undefined>

为什么会这样?我猜这与我如何处理将图像文件提交到表单有关,但我不知道为什么。我的相关代码如下:

form = browser.get_forms()
form = form[0]
image = os.path.dirname(os.path.realpath(__file__)) + r"\test.png"
form['file1'] = image
browser.submit_form(form, submit=form["add_photo_done"])
print(browser.parsed())

编辑:
我不相信这是UnicodeDecodeError: 'charmap' codec can't decode byte X in position Y: character maps to 因为我没有读取代码中的任何文件,错误似乎在提交表单时出现. 无论如何,我已经看过这篇文章,但我无法弄清楚如何使用它来解决我的问题。

4

1 回答 1

0

发现我需要发送一个图像对象而不是图像的路径。如果有人正在查看以下解决方案代码:

image = open(os.path.dirname(os.path.realpath(__file__)) + r"\test.jpg", 'rb')
于 2018-08-22T04:24:00.670 回答