【问题标题】:How to parse a html file and get the text which is in between the tags by using Python? [duplicate]如何使用 Python 解析 html 文件并获取标签之间的文本? [复制]
【发布时间】:2011-10-28 04:09:48
【问题描述】:

可能重复:
Parsing HTML in Python

我在互联网上进行了更多搜索,以使用 Python 获取标签之间的文本。能解释一下吗?

【问题讨论】:

标签: python html-parsing


【解决方案1】:

下面是一个使用BeautifulSoup解析HTML的例子:

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup("""<html><body>
                        <div id="a" class="c1">
                            We want to get this
                        </div>
                        <div id="b">
                            We don't want to get this
                        </div></body></html>""")
print soup('div', id='a').text

这个输出

We want to get this

【讨论】:

    【解决方案2】:

    上面 cmets 中的链接中提供的 htmlparser 可能是更健壮的方法。但是,如果您在特定标签之间有一些简单的内容,您可以使用regular expressions

    import re
    html = '<html><body><div id='blah-content'>Blah</div><div id='content-i-want'>good stuff</div></body></html>'
    m = re.match(r'.*<div.*id=\'content-i-want\'.*>(.*?)</div>', html)
    if m:
        print m.group(1) # Should print 'good stuff'
    

    【讨论】:

    • 我不同意使用正则表达式来解析 HTML。您的代码仅适用于最简单的示例。如果 div 有任何其他属性(如类),它将失败。如果 div 中的文本有 &gt;,它将失败。对于任何不切实际的简单示例,正则表达式是不够的。另见stackoverflow.com/questions/1732348/…
    • 是的,HTML 解析器库是要走的路。但是可能存在您从固定的 HTML 格式读取的情况,或者您除了内置的 python 库之外什么都没有。在这种情况下,我已更正的上述代码应该可以工作。是的,它不像 HTML 解析器那么健壮,因此我的答案是第一行。
    猜你喜欢
    • 2018-01-24
    • 1970-01-01
    • 2020-03-17
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    相关资源
    最近更新 更多