Python Mechanize unescape_charref()无法处理十六进制代码

2024-04-25 22:44:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Mechanize中遇到了一个有趣的错误,我不确定是否将其作为bug提交,或者需要寻找解决方法。在

打开一个页面(错误地?)包含带十六进制代码的转义字符,会导致ValueError。以下代码再现错误:

import mechanize
b = mechanize.Browser()
gr = 'http://www.goodreads.com/'
b.open(gr + 'book/show/613791.Santuario_De_La_Pen_X303_A_De_Francia')

经过长时间的回溯,报告如下:

^{pr2}$

我想这是由于unescape_charref()需要一个二进制字符代码(例如#771),而这个页面使用十六进制代码#X303。有没有办法让Mechanize正确地处理这个问题?在

在这种情况下,我实际上不太关心正确的跳转,因为我只想从这类页面的head元素内部检索URL。我想捕捉ValueError并继续得到响应。不幸的是,Mechanize无法处理此问题,并且返回None。在


Tags: 方法代码importbrowserhttp错误de页面