如何让HTMLParser在解析错误后继续解析?
我正在创建一个网络爬虫,使用HTMLParser模块来从HTML文档中提取链接。如果解析器遇到格式错误,它会报错并终止程序。由于爬虫会遍历整个网络,这种错误经常发生。
在python.org的错误报告区,有人已经提出了这个问题。你可以在这里查看。问题是,我不太知道如何使用提供的“补丁”,而且我也不理解那些评论。
我想要改变HTMLParser模块的默认行为,让它在遇到解析错误后继续解析。
3 个回答
0
有些博客和网页不希望它们的内容被机器人和解析程序扫描和解析。它们希望很多解析程序在处理时出现错误。
很多时候,这种要求会在网页的代码中写明,比如:
document.write('<sci'+<pt'...)
在这种情况下,用户试图通过JavaScript插入代码,但当整个内容被解析时,解析程序会报错,提示“遇到了坏标签”,然后就停止了。
解决这个问题的最好方法是在解析之前,先把所有的JavaScript代码去掉,如果你只需要内容的话,这样就能顺利进行啦 :)
0
我自己不使用HTMLParser,但你是不是可以把你的代码放在一个try/except块里呢?
try:
myval = HTMLParser.flimsyFunction()
except HTMLParser.ParseError:
myval = None
2
你应该使用BeautifulSoup,而不是HTMLParser。因为BeautifulSoup要更强大一些。
Beautiful Soup不会因为你给它糟糕的代码而出错。它会生成一个解析树,这个树大致上和你原来的文档有相似的结构。通常来说,这样就足够让你提取到需要的数据,然后就可以离开了。