Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中使用正则表达式从文件底部读取HTML标记?_Python_Html_Regex_Parsing_Response - Fatal编程技术网

如何在Python中使用正则表达式从文件底部读取HTML标记?

如何在Python中使用正则表达式从文件底部读取HTML标记?,python,html,regex,parsing,response,Python,Html,Regex,Parsing,Response,我有一个HTML响应,我需要获取页面上最后一个标记之间的数据,有没有一种方法可以用Python中的regex或使用Python中的其他工具来实现这一点 例如 应返回def。使用\s*[\s\s]+?\s*作为正则表达式,用findall从标题中去掉前导和尾随空格,并取最后一个匹配项: 您不应该使用正则表达式解析HTML,因为大多数情况下效率低下且难以阅读。如果你没有其他选择,正则表达式应该是最后的选择。查看更多信息 谢天谢地,有很多类似Python的HTML解析器 使用BeautifulSoup

我有一个HTML响应,我需要获取页面上最后一个标记之间的数据,有没有一种方法可以用Python中的regex或使用Python中的其他工具来实现这一点

例如

应返回def。

使用\s*[\s\s]+?\s*作为正则表达式,用findall从标题中去掉前导和尾随空格,并取最后一个匹配项:


您不应该使用正则表达式解析HTML,因为大多数情况下效率低下且难以阅读。如果你没有其他选择,正则表达式应该是最后的选择。查看更多信息

谢天谢地,有很多类似Python的HTML解析器

使用BeautifulSoup,您可以使用以下内容获取最后一个标题标签:

last_title = soup.find_all('title')[-1].text.replace('\n', '')

但是,在这种情况下,您可能应该去掉这个讨厌的尾随新行的结果文本。@Booboo您是对的。我没注意到。我刚刚编辑了我的代码,谢谢你的提醒。
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
last_title = soup.find_all('title')[-1].text.replace('\n', '')