要高效提取HTML中特定<div>标签下的<li>文本内容,可以使用正则表达式结合适当的模式匹配。以下是一个示例Python代码,展示如何使用正则表达式来实现这一目标:
import re
# 示例HTML内容
html_content = """
<div class="target-div">
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
<div class="other-div">
<ul>
<li>Other Item 1</li>
<li>Other Item 2</li>
</ul>
</div>
"""
# 正则表达式模式
pattern = r'<div class="target-div">.*?<ul>(.*?)</ul>.*?</div>'
# 使用re.DOTALL标志使.匹配包括换行符在内的所有字符
match = re.search(pattern, html_content, re.DOTALL)
if match:
# 提取<ul>标签内的内容
ul_content = match.group(1)
# 提取<li>标签内的文本内容
li_pattern = r'<li>(.*?)</li>'
li_matches = re.findall(li_pattern, ul_content)
# 输出结果
for li_text in li_matches:
print(li_text)
else:
print("未找到目标div标签")
正则表达式模式:
r'<div class="target-div">.*?<ul>(.*?)</ul>.*?</div>':这个模式匹配<div class="target-div">标签内的所有内容,并捕获<ul>标签内的内容。.*?:非贪婪匹配,确保匹配尽可能少的内容。(.*?):捕获组,用于提取<ul>标签内的内容。re.DOTALL标志:使.匹配包括换行符在内的所有字符,确保跨行匹配。
提取<li>标签内容:
r'<li>(.*?)</li>':这个模式匹配<li>标签内的文本内容。re.findall:返回所有匹配的<li>标签内容。Item 1
Item 2
Item 3
BeautifulSoup或lxml。class或id的不同)而失效,因此在使用正则表达式时要确保HTML结构相对稳定。