在Python中使用Mechanize时解析错误

时间:2012-06-14 15:22:17

标签: python forms mechanize parse-error

我正在尝试在Dell Kace售票页面上选择一个表单,但我得到一个解析错误。我在python中编程并且一直在使用mechanize。我成功登录了该网站。我读到你可以用像美丽的汤这样的html清洁工来解决这个问题,但这些似乎都不起作用。

br = mechanize.Browser() #have tried the various html cleaner options in mechanize
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US;  
rv:1.9.0.1)Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 
....
url_ticket = 'http://kace-server/adminui/ticket.php?ID=%d' %(box1[sel+1])
url_org1 = "http://kace-server/common/switch_to_org.php?org=1"
br.open(url_org1)
br.open(url_ticket)
br.select_form(name="ticket_form")  
br.form['fields[owner_filter]']=current_user[0]
br.submit()

程序在br.select_form行失败并出现以下错误

line 39, in assign
  br.select_form(name="ticket_form")
....
File "C:\Python27\lib\site-packages\mechanize-0.2.5-py2.7.egg\mechanize\_form.py", 
line 760, in feed raise ParseError(exc)
ParseError: expected name token at '<!\xe2\x80\x94IE7 mode --\n  <'

我在html中搜索了'!\ xe2 ...字符串但找不到它。我也为select_form尝试了nr = 0。任何帮助将不胜感激

谢谢, 詹姆斯

2 个答案:

答案 0 :(得分:0)

“\ xe2 \ x80 \ x94”是字符“ - ”的utf-8编码形式(不是“ - ”!)。看起来这是html中的拼写错误(或者使用msword作为html编辑器的一些虚拟人物?),应该是“

答案 1 :(得分:0)

对我而言,页面可能以UTF-8编码。 '<!\xe2\x80\x94IE7 mode --\n <'将解码为u'<!—IE7 mode --\n <'。也许这是HTML评论<!--,但--已更改为