3
SGMLParser를 상속받은 간단한 클래스를 작성했습니다. 이 클래스의 기본 아이디어는 html 페이지에서 모든 링크를 수집하고이 링크가있는 행 번호를 인쇄하는 것입니다.Python : SGMLParser가 줄 번호를 얻을 수 없습니다.
클래스는 다음과 같습니다
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']
질문 : 내가 링크의 실제 행 번호를 얻을 수 없습니다 왜?