我正在创建一个Web爬虫,我使用HTMLParser模块来解析HTML文档中的链接。如果解析器遇到错误标记,则会引发解析错误并终止应用程序。由于爬虫遍历整个Web,因此这个错误会经常出现。
在python.org bug部分,有人已提出此问题。你可以查看here。这个问题是我真的不知道如何使用提供的“补丁”,我不理解这些评论。
我希望覆盖HTMLParser模块的默认行为,以允许它在解析错误后继续解析。
答案 0 :(得分:1)
您应该使用BeautifulSoup而不是HTMLParser。 BeautifulSoup更强大。
如果给你不好的标记,美丽的汤不会窒息。它产生一个解析树,使其与原始文档几乎一样有意义。这通常足以收集您需要的数据并逃跑。
答案 1 :(得分:1)
我自己不使用HTMLParser,但是你不能只将你的语句放在try / except块中吗?
try:
myval = HTMLParser.flimsyFunction()
except HTMLParser.ParseError:
myval = None
答案 2 :(得分:0)
某些博客和网页不希望通过机器人和解析器程序扫描和解析他们的网页。他们希望许多解析器提供错误情况。
多次将其写在网页代码中
document.write('<sci'+<pt'...)
以这种方式通过javascript用户尝试插入代码但是当整个feed被设置为被解析时,解析器会给出错误,说明遇到了错误的标记&#34;它停了。
解决此问题的最佳方法是在解析之前删除所有javascript代码以防您只是需要内容,并且您将正常工作:)