靓汤养独角兽“序数不在范围内(128)”

2024-09-29 22:33:15 发布

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

我试图解析从wildweb下载的任意文档,是的,我无法控制它们的内容。在

既然Beautiful Soup won't choke if you give it bad markup...我想知道为什么有时文档的部分格式不正确时它会给我带来麻烦,以及是否有方法使它恢复到文档的下一个可读部分,而不管这个错误。在

发生错误的行是第三行:

from BeautifulSoup  import BeautifulSoup as doc_parser
reader = open(options.input_file, "rb")
doc = doc_parser(reader)

CLI完整输出为:

^{pr2}$

Tags: 文档youparser内容docif错误reader
2条回答

在python3.0之前的python版本中,如果输入中有非ascii字符,就会发生这种情况

如果试图对包含字符值大于128(ANSII&unicode)的字符的字符串使用str(...),则会引发此异常。在

在这里,错误可能是因为getattr试图在unicode字符串上使用str它“认为”可以安全地这样做,因为在3.0之前的python版本中,标识符不能包含unicode。在

检查HTML中是否有unicode字符。尝试替换/编码这些,如果仍然不起作用,告诉我们。在

是的,如果你有非ASCII名称的元素(<café>),它会窒息。对于XML来说,这甚至不是“坏标记”。。。在

BeautifulGroup正在使用的sgmllib中存在一个缺陷:它试图查找与标记同名的自定义方法,但在Python2中,方法名是字节字符串,因此即使是在中查找不存在非ASCII字符的方法,也会失败。在

您可以通过将第259行和第371行从except AttributeError:更改为except AttributeError, UnicodeError:来修复sgmllib,但这并不是一个好的修复。重写方法的其余部分也很重要。在

你想分析什么?beauthoulstonesoup的有用性总是有问题的,实际上XML没有HTML那样丰富的可怕的解析器,所以一般来说,损坏的XML不是XML。因此,您通常应该使用普通的旧XML解析器(例如使用标准DOM或etree)。对于解析一般的HTML,html5lib是目前您更好的选择。在

相关问题 更多 >

    热门问题