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

时间:2015-08-25 17:33:16

标签: python html django beautifulsoup

这样做的目的是浏览HTML文件的内容并侦出所有img,input,area标签,这些标签没有“alt”作为其属性之一。我为它写了以下内容。我在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时,两者都有相同的img / input / area链接,即使它们中没有alt属性!

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

1 个答案:

答案 0 :(得分:2)

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

alttrue = []
altfalse = []