我了解如何使用 HTMLParser 中的handle_starttag,但我很困惑它在幕后是如何工作的。
https://docs.python.org/3/library/html.parser.html#example-html-parser-application
文档说需要重写这个handle_starttag方法,它确实按预期工作。
但是,当我检查父类(HTMLParser)中的定义时,该定义只不过是一个“pass”。
那么handle_starttag是如何工作的呢?如果父定义为空,Python 如何知道 tag 是 tag 而 attrs 是属性? 如果我的问题不清楚,很乐意澄清更多信息。 提前致谢。
最佳答案
默认情况下,handle_starttag
不执行任何操作。它只是在那里被覆盖。知道什么是标签、什么是属性不是 handle_starttag
的工作;这是其他代码的工作。 什么都没有是默认handle_starttag
的工作。
调用handle_starttag
是HTMLParser
询问子类的方式,“嘿,你想用我刚刚解析的这个开始标签做任何事情吗”?重写的 handle_starttag
是子类响应“是的,谢谢,我会做我用开始标签做的事情”的方式。如果它没有被覆盖,它什么也不做。无论哪种方式,在调用之后,解析都会继续。
关于HTMLParser 中的 Python 可重写函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59765141/