代码之家  ›  专栏  ›  技术社区  ›  akraut Tony

过滤出HTML标记并解析python中的实体

  •  18
  • akraut Tony  · 技术社区  · 18 年前

    因为正则表达式让我害怕,所以我试图找到一种方法来删除所有HTML标记,并在Python中解析字符串中的HTML实体。

    8 回复  |  直到 18 年前
        1
  •  39
  •   FelixEnescu    9 年前

    使用 lxml 哪一个是python最好的xml/html库。

    import lxml.html
    t = lxml.html.fromstring("...")
    t.text_content()
    

    如果您只想清理html,请查看lxml.html.clean module

        2
  •  16
  •   John Millikin    18 年前

    使用 BeautifulSoup ! 它非常适合这种情况,因为你有可疑的优点,需要从中得到一些合理的东西。只需传入原始文本,提取所有字符串标记,并将它们连接起来。

        3
  •  6
  •   Grey Panther    18 年前

    虽然我同意Lucas的观点,正则表达式并不那么可怕,但我仍然认为应该使用专门的HTML解析器。这是因为HTML标准非常复杂(特别是如果您想解析从Internet上任意删除的“HTML”页面),您需要编写大量代码来处理这些情况。看来 python includes one out of the box .

    python bindings for TidyLib 它可以清理损坏的HTML,使得任何HTML解析的成功率都要高得多。

        4
  •  4
  •   Bill the Lizard    14 年前

    我会尝试一些书中描述的作者的作品 chapter 8.3 in the Dive Into Python book

        5
  •  2
  •   code22    15 年前
        6
  •  1
  •   Paige Ruten    18 年前

    您可能需要比正则表达式更复杂的东西。网页通常具有不属于标记的尖括号,如下所示:

     <div>5 < 7</div>
    

     < 7</div>
    

    作为一个单一的标签,并剥离它。

    我建议寻找已经为您编写的代码。我搜索了一下,发现了这个: http://zesty.ca/python/scrape.html

        7
  •  0
  •   Carl Meyer    18 年前

    正则表达式并不可怕,但编写自己的正则表达式来剥离HTML肯定是一条疯狂之路(而且也行不通)。遵循智慧之路,使用众多优秀的HTML解析库之一。

    Lucas的例子也被打破了,因为“sub”不是Python字符串的方法。您必须“导入re”,然后调用re.sub(pattern、repl、string)。但这不是这里也不是那里,因为你问题的正确答案并不涉及编写任何正则表达式。

        8
  •  0
  •   Lucas Wilson-Richter    18 年前

    恐怖的