我正在创建一个网络爬虫,我使用HTMLParser模块来解析超文本标记语言文档中的链接。如果解析器遇到错误的标记,它会引发解析错误并终止应用程序。由于爬虫遍历了整个web,所以这个错误经常会被抛出。
在python.org错误部分,已经有人提出了这个问题。你可以看看这个here。这样做的问题是,我真的不知道如何使用提供的“补丁”,我也不理解评论。
我希望覆盖HTMLParser模块的默认行为,以允许它在出现解析错误后继续解析。
发布于 2011-04-20 23:13:43
您应该使用BeautifulSoup而不是HTMLParser。BeautifulSoup要健壮得多。
如果你给
美丽的汤不好的标记,它就不会卡住。它会生成一个语法分析树,其意义与原始文档大致相同。这通常足以收集您需要的数据并跑路。
发布于 2011-04-20 23:24:07
我自己并不使用HTMLParser,但是你能不能不把你的语句放在一个try/except块中呢?
try:
myval = HTMLParser.flimsyFunction()
except HTMLParser.ParseError:
myval = None发布于 2012-01-11 18:48:25
有些博客和页面不希望通过机器人和解析器程序对其页面进行扫描和解析。他们想要许多解析器给出错误情况。
很多时候,它在网页的代码中写成
document.write('<sci'+<pt'...)通过这种方式,用户试图通过javascript插入代码,但是当整个提要被设置为要解析时,解析器会给出一个错误,说“遇到了一个坏标签”,解析器就会停止。
解决这个问题的最好方法是在解析之前删除所有javascript代码,以防您只需要内容,这样您就可以很好地工作了:)
https://stackoverflow.com/questions/5732588
复制相似问题