繁体   English   中英

带有HTML标记和转义字符的正则表达式

[英]Regex with HTML tags and escaped characters

我有这段文字:

<h5 class="subblocksubhead subsubsectionhead first"><b>Messaggi inseriti</b></h5>
<dl class="blockrow stats">
    <dt><b>Messaggi inseriti</b></dt>
    <dd> 81</dd>
</dl>
<dl class="blockrow stats">
    <dt>Media dei messaggi giornalieri</dt>
    <dd> 0.02</dd>
</dl>

并且我正在尝试使用以下代码提取" 81"

regex_message_sent_num=r'Messaggi inseriti<.+>\n\t\t<.+?>(\s.+)<.+?>'
pattern_message_sent_num=re.compile(regex_message_sent_num)
results_message_sent_num=re.findall(pattern_message_sent_num,html_text)

我总是得到一个空列表作为输出,而当我在这里测试代码时我得到了正确的提取。

知道我在做什么错吗? HTML来自一个网页,我正在尝试从中提取一些可见的数据作为练习。 我在从chrome浏览器保存的HTML文本上测试了正则表达式。

请改用HTML Parser,例如BeautifulSoup

使用文本搜索和find_next_sibling()方法

from bs4 import BeautifulSoup

data = """
<div>
    <dl class="blockrow stats">
        <dt><b>Messaggi inseriti</b></dt>
        <dd> 81</dd>
    </dl>
    <dl class="blockrow stats">
        <dt>Media dei messaggi giornalieri</dt>
        <dd> 0.02</dd>
    </dl>
</div>"""

soup = BeautifulSoup(data, "html.parser")

label = soup.find("dt", text="Messaggi inseriti")
print(label.find_next_sibling("dd").get_text(strip=True))

打印81

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM