【问题标题】:BeautifulSoup Close all unclosed image tagsBeautifulSoup 关闭所有未关闭的图片标签
【发布时间】:2019-08-29 08:55:03
【问题描述】:

我正在尝试使用 Python Beautiful soup 查找 html 文件文件夹中的所有图像,然后关闭所有 img 标签,以便将电子邮件放置在仅支持 XHTML 的系统中。

目前我有:

soup = BeautifulSoup(engage, "html.parser")
images = soup.find_all('img')
print(email_name + ": " + str(len(images)) + " images were found.")
soup.prettify()

这确实有效,并将提取我电子邮件中的所有图像,然后将它们与电子邮件名称和找到的图像数量一起输出。然而,这也针对已经关闭的图像。我希望它只找到类似的图像。

<img src="..." alt="...">

并让它忽略任何已经关闭的图像

<img src="..." alt="..."/>

然后去关闭所有其他的。最后再检查以确保没有遗漏。

在转向 BeautifulSoup 之前,我一直在研究正则表达式,并为仅查找关闭的图像而制作。

(<img[^>]+)(?<!/)/>

但我不确定如何使用 BeautifulSoup 来完成这项工作,或者即使有更 BS 的方式来做同样的事情。

任何帮助将不胜感激。

【问题讨论】:

    标签: python python-3.x beautifulsoup


    【解决方案1】:

    BeautifulSoup find_all 可以采用这样的正则表达式:

    import re
    for tag in soup.find_all(re.compile("your regex here")):
        print(tag.name)
    

    您可以在这里找到更多信息BeautifulSoup regular expression 另一种搜索图像标签的方法是原生正则表达式:

    for tag in re.findall(re.compile('<img\b[^>]*[^/]>'), str(soup)):
        print( tag)
    

    终于 &lt;img\b[^&gt;]*[^/]&gt; - 正则表达式的这一部分必须让您了解如何获取非封闭的 img 标签 有关正则表达式和re.compile 的更多信息,您可以在此处找到

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2023-04-01
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 2020-09-21
      相关资源
      最近更新 更多