Отправка формы с помощью механизма (TypeError: ListControl, необходимо установить последовательность)

Я пытаюсь отправить форму с помощью механизации, но столкнулся с ошибкой (TypeError: ListControl, необходимо установить последовательность). После некоторого времени поиска в Google и использования нескольких различных решений я не смог решить проблему. Я пытаюсь отправить все поля.

Данные формы, полученные через chanize (для f в br.forms() напечатайте: f)

<POST http://www.example.com/takeupload.php multipart/form-data
<HiddenControl(MAX_FILE_SIZE=1000000) (readonly)>
<TextControl(<None>=http://www.example.com:81/test.php?pass=550) (readonly)>
<FileControl(file=<No files added>)>
<TextControl(name=)>
<SelectControl(type=[*0, 23, 22, 1, 10, 7, 18, 4, 21, 56, 20, 60, 5, 19, 6, 55, 63, 9])>
<CheckboxControl(strip=[strip])>
<FileControl(nfo=<No files added>)>
<TextareaControl(descr=)>
<SubmitControl(<None>=Do it!) (readonly)>>

Мой текущий код

br.open('http://www.bitfarm.co.za/upload.php')

br.select_form(nr=4)

filename = 'test.torrent'
br.form.add_file(open(filename), 'application/x-bittorrent', filename, name='file') 
br.form['name'] = 'test'
br.form['type'] = '22'
br.form['strip'] = '0'
br.form['nfo'] = ''
br.form['descr'] = 'This is the desc'

br.submit()

Пожалуйста, не могли бы вы помочь и проверить, правильно ли я использую синтаксис для параметров формы. Спасибо


person Michael Esteves    schedule 06.02.2012    source источник


Ответы (1)


Поле type ожидает от вас список целых чисел, но вы предоставляете только одно целое число.
Измените это:

br.form['type'] = '22'

к этому:

br.form['type'] = ['22',]
person Misha Akovantsev    schedule 06.02.2012
comment
@Michael, я должен перепроверить сам, так что это будет намного быстрее, если вы просто запустите свой код и посмотрите, работает ли он самостоятельно. - person Misha Akovantsev; 06.02.2012
comment
Спасибо, вроде работает. У одного ошибка. br.form['descr'] выдает SyntaxError: не-ASCII-символ '\xe2' в файле C:\Python\login.py в строке 79, но кодировка не объявлена. Как установить правильную кодировку? Спасибо - person Michael Esteves; 06.02.2012
comment
@Michael, единственное предложение, которое я могу сделать, не видя вашего файла, - прочтите это: python.org/dev/peps/pep-0263 - person Misha Akovantsev; 07.02.2012