我正在使用html.parser和urllib.request。我不打算使用任何非本地模块,但如果有必要,我愿意使用其他本地模块。 目前(的一部分),我的代码如下所示:我想检索特定行上的html标记内的文本
class MyHTMLParser(HTMLParser):
def handle_data(self, data):
if self.getpos()[0] == 167:
print(self.data)
我遇到的问题是,HTMLParser.getpos总是返回的元组(1,x),其中x是一个数字,每次增加但看似随机),像这样:
(1, 21) (1, 41) (1, 51) (1, 77) (1, 134) (1, 206) (1, 406) (1, 509) (1, 553) (1, 627) (1, 680) (1, 784) (1, 1143) (1, 1368)
我觉得整个html.parser模块是写在一个非常愚蠢的办法,可能已经想到了要好得多。显然它很有效,但它是违反直觉的。
全码:
from urllib.request import *
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_data(self, data):
print(self.getpos())
if self.getpos()[0] == 167:
print(data)
parser = MyHTMLParser()
html = urlopen("https://www.azlyrics.com/lyrics/aha/takeonme.html").read()
parser.feed(str(html))
你想要你的代码做什么,它不正确?你想要打印第167行的HTML吗?你能告诉我们你正在解析的HTML是什么样的吗? (如果它说它只在第一行,我猜这是一个单行文件)。另外我真的不知道是什么调用一个Python库,你坚持用这个愚蠢的增加来解决这个问题。 –
HTML是像[this]这样的页面(https://www.azlyrics.com/lyrics/aha/takeonme.html)。我试图从始终在第167行的div标签中取出歌词(字符串)数据,并将其分配给字符串变量。我说这是愚蠢的,因为它是 - 它增加了这个问题,因为这是对其他人可能使用更直观的模块的警告。我不会使用它,我必须使用它,因为我的学校电脑只有本地模块,所以我确保我没有5个人告诉我使用BeautifulSoup。 – Feesih0ps
您可以发布产生该输出的完整代码示例吗?它似乎对我来说工作得很好。 –