我正在使用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
您可以發佈產生該輸出的完整代碼示例嗎?它似乎對我來說工作得很好。 –