Python - 使用Python 3.6从{HTML}文本中清除标记

时间:2017-05-18 21:06:23

标签: python html

我正在尝试创建一个程序,可以“找到”指定的HTML标记,并用其他东西“替换”这些标记(使用作为字符串导入的HTML文本)。

免责声明:我对python很新,所以我可能会遗漏一些明显的东西。 另外 - 根据以前与此类似的帖子主题,我推测使用正则表达式模块可能最适合这个项目(我会采取替代方案的建议)。

以下是我的“输入”文字:

<p align="left"><span style="font-family: Arial,Arial; font-size: 12px; color: #ffffff;">Example Company | Technical How-To</span></p>  

这就是我想要的“输出”文字:

<p>Example Company | Technical How-To</p>  

以下是我的“输出”文字的内容:

</p> 

这是我用来获得答案的python代码:

while True: 

  import re
  print("Enter HTML Text Below")
  original = input("")


  def cleaner(raw_html):
    cleantextp = re.sub('<p.*?>', '<p>', raw_html)
    cleantextspan1 = re.sub('<span.*?>', '', cleantextp)
    cleantextspan2 = re.sub('<.*?/span>', '', cleantextspan1)
    return cleantextspan2

  if len(original) > 0:

    print(cleaner(original))

  else:
    print("Please try again")

对我来说奇怪的是,当我将我定义的函数“分开”并让它一次“清理”一个指定的标签时,它似乎有效。例如:

while True: 

  import re
  print("Enter HTML Text Below")
  original = input("")


  def cleaner(raw_html):
    cleantextp = re.sub('<p.*?>', '<p>', raw_html)
    return cleantextp

  if len(original) > 0:

    print(cleaner(original))

  else:
    print("Please try again")

此代码向我提供此文本(不会故意删除<span>标记,但也不会再次返回</p>

<p><span style="font-family: Arial,Arial; font-size: 12px; color: #ffffff;">Example Company | Technical How-To</span></p>

所以基本上,我被卡住了。我尝试了几种不同的方法,包括为每个标签定义一个单独的“干净”函数,并按顺序迭代每个函数的“输入”文本,但我没有任何运气。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

BeautifulSoup,只是谷歌,你,欢迎=)

答案 1 :(得分:1)

使用Python beautfulsoup library。 (你需要先安装它。)

网上有很多例子可以找到你需要的东西