机械化:第一个表单工作,然后“未知的GET表单编码类型'utf-8'”

时间:2013-09-30 16:23:32

标签: python forms encoding mechanize mechanize-python

我正在尝试从EUR-Lex网站填写2个表单,以便从生成的网页中记录一些数据。 我被困在表格#2。我觉得这应该很容易,我已经研究了一下,但没有运气。

import mechanize

froot = '...'
f = open(froot + 'text.html', 'w')

br = mechanize.Browser()
br.open('http://eur-lex.europa.eu/RECH_legislation.do')
br.select_form(name='form2')
br['T1'] = ['V112']
br['T3'] = ['V2']
br['T2'] = ['V1']

first_page = br.submit()
f.write(first_page.get_data())

直到这里一切似乎都有效,因为我得到了保存到文件中的正确页面的来源。但是......然后......

br.select_form(name='form2')
br['typedate'] = ['PD']

br['startaaaa'] = '1960'
br['startmm'] = '01'
br['startjj'] = '01'
br['endaaaa'] = '1960'
br['endmm'] = '12'
br['startjj'] = '31'

next = br.submit()

这里一切都停止了:

ValueError: unknown GET form encoding type 'utf-8'

在选择第一个和第二个表单之前,我检查了br.enctype。我得到的是:

    第一张表格后的
  • application/x-www-form-urlencoded
  • 在第二种形式之后:utf-8

我不知道这里发生了什么。

1 个答案:

答案 0 :(得分:0)

我是如何解决这个问题的:

我在更改源

后重新安装了机械化

_form.py的第3233行:

if (self.enctype != "application/x-www-form-urlencoded") and (self.enctype != "utf-8"):

这可能是非常错误的,只能处理我的情况。 但在我的具体情况下,它有效。