过滤掉HTML标签并解析python中的实体

过滤掉HTML标签并解析python中的实体

Filter out HTML tags and resolve entities in python

因为正则表达式使我感到恐惧,所以我试图找到一种方法来删除所有HTML标签并从Python中的字符串解析HTML实体。


使用lxml是最适合python的xml / html库。

1
2
3
import lxml.html
t = lxml.html.fromstring("...")
t.text_content()

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


使用BeautifulSoup!这是完美的选择,您将收到可疑美德的标记,并且需要从中获取合理的信息。只需传入原始文本,提取所有字符串标签,然后将它们加入即可。


尽管我同意Lucas的观点,正则表达式并不那么令人恐惧,但我仍然认为您应该使用专门的HTML解析器。这是因为HTML标准足够繁琐(尤其是如果您要随意分析从Internet删除的" HTML"页面),则需要编写大量代码来处理特殊情况。看来python包含一个开箱即用的功能。

您还应该检查TidyLib的python绑定,该绑定可以清除损坏的HTML,从而使任何HTML解析的成功率都更高。


如何解析HTML数据并在解析器的帮助下提取数据?

我会尝试类似《 Dive Into Python》一书中第8.3章所述的作者


如果您使用django,也可以使用
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#striptags
;)


您可能需要比正则表达式更复杂的东西。网页通常带有尖括号,这些尖括号不是标签的一部分,例如:

1
 ;lt;div;gt;5 ;lt; 7;lt;/div;gt;

用正则表达式剥离标签将返回字符串" 5"并处理

1
 ;lt; 7;lt;/div;gt;

作为单个标签并将其剥离。

我建议寻找已经为您完成此工作的已编写代码。我经过搜索发现:http://zesty.ca/python/scrape.html它还可以解析HTML实体。


鉴于人们在这里在其他答案中所表现出的感觉,我想说使用正则表达式可能不是您所处情况的最佳主意。寻找经过尝试和测试的东西,然后将我以前的答案当作证明正则表达式不必那么吓人的证明。


正则表达式并不可怕,但是编写自己的正则表达式来剥离HTML是确保疯狂的必经之路(也行不通)。遵循智慧的道路,并使用许多优秀的HTML解析库之一。

Lucas的示例也被破坏了,因为" sub"不是Python字符串的方法。您必须"导入re",然后调用re.sub(样式,repl,字符串)。但这既不存在也不存在,因为对您问题的正确答案不涉及编写任何正则表达式。


推荐阅读

    linux下删除用户命令?

    linux下删除用户命令?,系统,代码,邮箱,用户组,命令,用户,名称,管理,电脑,账

    linux的删除所有命令?

    linux的删除所有命令?,不了,系统,名称,命令,文件夹,文件,目录,档案,数据,环

    linux删除用什么命令?

    linux删除用什么命令?,档案,系统,命令,文件夹,文件,不了,名称,目录,终端,指

    添加字符串命令linux?

    添加字符串命令linux?,情况,名称,文件,位置,名字,地方,连续,信息,命令,内容,L

    linux默认命令删除?

    linux默认命令删除?,系统,软件,名称,档案,命令,文件,目录,不了,电脑,文件夹,

    linux下删除命令行?

    linux下删除命令行?,系统,数据,命令,文件,名称,百度,环境,不了,档案,文件夹,l

    linux删除挂载命令?

    linux删除挂载命令?,系统,设备,电脑,信息,管理,网络,名字,密码,文件,命令,lin

    linux退出删除命令行?

    linux退出删除命令行?,地址,状态,系统,工作,命令,电脑,名字,管理,信息,文件,l

    linux删除空行命令?

    linux删除空行命令?,名称,不了,命令,文件夹,文件,时间,工作,简介,情况,资料,l

    linux删除软件命令?

    linux删除软件命令?,软件,系统,命令,不了,名称,数据,文件夹,文件,工具,百度,l

    linux删除集群命令?

    linux删除集群命令?,软件,管理,工具,平台,工作,系统,技术,数据,公司,产品,在l

    linux删除包命令行?

    linux删除包命令行?,软件,名称,系统,不了,命令,电脑,工具,文件,文件夹,目录,l

    linux输入命令删除键?

    linux输入命令删除键?,名称,系统,档案,命令,文件,目录,不了,数据,文件夹,终

    linux删除群组的命令?

    linux删除群组的命令?,系统,管理,工作,名称,命令,地址,邮箱,基础,密码,用户

    删除密码命令linux?

    删除密码命令linux?,密码,系统,管理,电脑,软件,百度,信息,名称,名字,命令,lin

    linux恢复删除命令?

    linux恢复删除命令?,工具,系统,信息,文件,命令,数据,软件,名称,不了,目录,lin

    linux的删除文件命令?

    linux的删除文件命令?,名称,不了,系统,文件夹,命令,文件,环境,档案,目录,指

    linux删除容器命令?

    linux删除容器命令?,系统,名称,不了,档案,命令,文件夹,文件,环境,目录,指令,l

    linux中vi命令删除?

    linux中vi命令删除?,系统,数字,命令,环境,标的,数据,不了,名称,连续,位置,Lin

    linux服务器删除命令?

    linux服务器删除命令?,系统,服务,管理,情况,命令,工作,互动,地址,软件,较大,l