滄海一幻覺(jué)
2023-09-19 14:55:53
我有一個(gè) HTML 響應(yīng),我需要獲取<title>頁(yè)面上最后一個(gè)標(biāo)簽之間的數(shù)據(jù),有沒(méi)有辦法可以使用 Python 中的正則表達(dá)式或使用 Python 中的其他工具來(lái)完成此操作?例如。<title>abc</title><title>def</title>應(yīng)該返回 def。
2 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
您不應(yīng)該使用正則表達(dá)式來(lái)解析 HTML,因?yàn)榇蠖鄶?shù)情況下效率低下且難以閱讀。如果您沒(méi)有任何其他選擇,正則表達(dá)式應(yīng)該是最后的選擇。
值得慶幸的是,有很多適用于 Python 的 HTML 解析器,例如BeautifulSoup。
使用 BeautifulSoup 你可以獲得最后一個(gè)標(biāo)題標(biāo)簽:
last_title?=?soup.find_all('title')[-1].text.replace('\n',?'')

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
用作<title>\s*([\s\S]+?)\s*</title>
正則表達(dá)式(從標(biāo)題中去除前導(dǎo)和尾隨空格)并findall
獲取最后一次出現(xiàn)的位置:
import re
text = """abc
<title>abc
</title>
def
ghi
<title>def
</title>
jkl
"""
tags = re.findall(r'<title>\s*([\s\S]+?)\s*</title>', text)
print(tags[-1]) # the last one
印刷:
def
添加回答
舉報(bào)
0/150
提交
取消