在 Python 中使用 alt 提取多媒体标签

Extracting multimedia tags with alt in Python

这样做的目的是 运行 通过 HTML 文件的内容并找出所有 have/have [=18] 没有的 img、input、area 标签=] 作为他们的属性之一。我为此写了以下内容。我在 Python 中使用的库是用于提取的 BeautifulSoup 和用于打开 url 的 urllib。只发布相关部分。

alttrue = altfalse = []
multimedialist = ['img','input','area']
for tag in multimedialist:
    for incodetag in soup.findAll(tag):
        if incodetag.get('alt') is None:
            altfalse.append(incodetag)
        else:
            alttrue.append(incodetag)
print(alttrue) 
print(altfalse)

最后,代码能够找到所有 img、input 和 area 标签,但是当我打印出 alttrue 和 altfalse 时,即使没有 alt 属性,它们也有相同的 img/input/area 链接在其中!

此外,我的另一个问题是,在 Django 中,我将这两个列表返回到 views.py 中的调用函数。我将这两个列表以及一堆其他列表放入一个变量中,并使用渲染函数将该变量传递给 html 页面。在我的 html 文件中,我使用了一个 for 循环并遍历了我从 views.py 收到的所有列表并将它们打印出来。但是,特别是对于这 2 个列表,在 html 页面上,它显示为空白列表 ([])。但是如果我通常在 html 页面上打印变量而不对每个元素使用 for 循环,那么它会打印出来。我将列表从我的 views.py 传递到我的 html 页面的方式没有问题,因为其他人工作得很好。为什么是这个呢?

alttrue 和 altfalse 变量都指向同一个列表,因此附加到其中一个也会影响另一个。您应该创建两个单独的列表:

alttrue = []
altfalse = []