【问题标题】:Python Regex Extract Text Within HTML TagsPython 正则表达式提取 HTML 标记中的文本
【发布时间】:2016-03-31 14:26:17
【问题描述】:

考虑以下几点:

<div id=foodmenu>
    <a href="randomlink">Hot Dog</a>
</div>
<div id=foodmenu>
    <a href="randomlink">Burger</a>
</div>
<div id=foodmenu>
    <a href="randomlink">Chips</a>
</div>
<div id=foodmenu>
    <a href="randomlink">Coke</a>
</div>

我将如何使用正则表达式来打印以下内容:

Hot Dog
Burger
Chips
Coke

【问题讨论】:

标签: python html regex


【解决方案1】:

不要用 RegEx 解析 HTML,但如果你坚持:

<a[^>]*>(.*?)</a>

数据存储在Capture Group #1

Live Demo on Regex101


如果&lt;a&gt; 标记之间的数据位于单独的行和/或包含缩进,请使用此正则表达式:

<a[^>]*>\s*((?:.|\n)*?)</a>

Live Demo on Regex101

【讨论】:

  • 如果没有正则表达式我该怎么做呢?
  • @Anonymous 使用 HTML 解析器
【解决方案2】:

一种非正则表达式、基于 HTML 解析器的方法(使用 BeautifulSoup HTML 解析器):

from bs4 import BeautifulSoup

data = """
<div id=foodmenu>
    <a href="randomlink">Hot Dog</a>
</div>
<div id=foodmenu>
    <a href="randomlink">Burger</a>
</div>
<div id=foodmenu>
    <a href="randomlink">Chips</a>
</div>
<div id=foodmenu>
    <a href="randomlink">Coke</a>
</div>"""

soup = BeautifulSoup(data, "html.parser")
print([link.get_text() for link in soup.select("#foodmenu > a")])

打印:

['Hot Dog', 'Burger', 'Chips', 'Coke']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 2010-09-15
    • 2014-04-22
    • 2010-11-06
    • 2018-06-15
    相关资源
    最近更新 更多