Python 此错误的含义是什么:ValueError:unknown POST form encoding type'';(怎么解决呢?)

Python 此错误的含义是什么:ValueError:unknown POST form encoding type'';(怎么解决呢?),python,web-crawler,mechanize,Python,Web Crawler,Mechanize,我正在尝试使用mechanize对网站()进行爬网,但我遇到了一个无法理解的错误(因此无法解决)。这可能是因为我对web开发的了解不够 以下是我想做的: import mechanize # this is the website I want to crawl LINK = "http://www.dataescolabrasil.inep.gov.br/dataEscolaBrasil/home.seam" br = mechanize.Browser() br.open(LINK)

我正在尝试使用
mechanize
对网站()进行爬网,但我遇到了一个无法理解的错误(因此无法解决)。这可能是因为我对web开发的了解不够

以下是我想做的:

import mechanize

# this is the website I want to crawl
LINK = "http://www.dataescolabrasil.inep.gov.br/dataEscolaBrasil/home.seam"

br = mechanize.Browser()
br.open(LINK) 
request  = mechanize.Request(LINK)
response = mechanize.urlopen(request)

# there're two forms in the page (output ommited), I want the second one.
forms = mechanize.ParseResponse(response, backwards_compat=False)
for form in br.forms():
    print "Form name:", form.name
    print form

br.select_form(nr=1)
br.form['codEntidadeDecorate:codEntidadeInput'] = '11024968'
response2 = br.submit()
下面是我得到的运行时错误:

Traceback (most recent call last):
  File "C:\test.py", line 19, in <module>
    response2 = br.submit()
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 541, in submit
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 530, in click
  File "build\bdist.win32\egg\mechanize\_form.py", line 2999, in click
  File "build\bdist.win32\egg\mechanize\_form.py", line 3201, in _click
  File "build\bdist.win32\egg\mechanize\_form.py", line 2350, in _click
  File "build\bdist.win32\egg\mechanize\_form.py", line 3269, in _switch_click
  File "build\bdist.win32\egg\mechanize\_form.py", line 3257, in _request_data
ValueError: unknown POST form encoding type ''
回溯(最近一次呼叫最后一次):
文件“C:\test.py”,第19行,在
response2=br.submit()
文件“build\bdist.win32\egg\mechanize\\u mechanize.py”,第541行,提交
文件“build\bdist.win32\egg\mechanize\\u mechanize.py”,第530行,单击
文件“build\bdist.win32\egg\mechanize\\ u form.py”,第2999行,单击
文件“build\bdist.win32\egg\mechanize\\ u form.py”,第3201行,点击
文件“build\bdist.win32\egg\mechanize\\ u form.py”,第2350行,点击
文件“build\bdist.win32\egg\mechanize\\ u form.py”,第3269行,在开关中单击
文件“build\bdist.win32\egg\mechanize\\ u form.py”,第3257行,在请求数据中
ValueError:未知的POST表单编码类型“”

我对传递给表单的字符串的编码做了一些调整,试图理解GET v。发布,但没有成功。

我在第页从您的示例中找到了该表单:

<form id="buscaForm" name="buscaForm" method="post" action="/dataEscolaBrasil/home.seam;jsessionid=EFB3D6270E69EAE71733137219C3026B" enctype="">


我认为这是一个问题,空的enctype属性。您需要将此属性的值设置为application/x-www-form-urlencoded,或者将其删除以使用默认值。

谢谢,很好。不知道如何更改树。我试着使用了
美工组
,但运气不佳——有什么想法吗?当然
br.form[“enctype”]=“application/x-www-form-urlencoded”
不会这样做,因为这是一个属性,而不是控件。请尝试
br.form.enctype=“application/x-www-form-urlencoded”
。Enctype是一个公共属性。