我编写了继承 SGMLParser 的简单类。这个类背后的主要思想是收集来自 html 页面的所有链接并打印可以找到该链接的行号。
该类如下所示:
class HtmlParser(SGMLParser):
def reset(self):
SGMLParser.reset(self)
self.links = []
def start_a(self, attr):
href = [v for k, v in attr if k == "href"]
self.links.append(href[0])
print(self.getpos())
问题是 getpos() 在每个链接上都返回 (1,0)。因此,如果运行以下代码:
parser = HtmlParser()
parser.feed('''
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<a href="www.foo-bar.com"></a>
<a href="http://foo.bar.com"></a>
<a href="www.google.com"></a>
</body>
</html>''')
parser.close()
print(parser.links)
输出将是:
(1, 0)
(1, 0)
(1, 0)
['www.foo-bar.com', 'http://foo.bar.com', 'www.google.com']
问题:为什么我无法获得链接的实际行号?