2015-08-25 4 views
0

Целью этого является просмотр содержимого файла HTML и поиск всех тегов img, input, area, которые не имеют/имеют «alt» в качестве одного из их атрибутов , Я написал для этого следующее. Библиотеки, которые я использую на Python, - BeautifulSoup для извлечения и urllib для открытия URL-адреса. Публикация только соответствующей части.Извлечение мультимедийных тегов с помощью alt в Python

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, входные и зональных теги, но когда я распечатать alttrue и altfalse, оба имеют те же ссылки IMG/вход/площадь, даже если это не alt в них!

Кроме того, еще один вопрос, который у меня есть, в Django, я возвращаю эти два списка вызывающей функции в моих views.py. И я помещаю эти 2 списка, а также кучу других списков в переменную и передавая эту переменную на страницу html с помощью функции рендеринга. В моем html-файле я использую цикл for и повторяю все списки, которые я получил из своих view.py, и распечатываю их. Тем не менее, для этих 2 списков, в частности, на странице html, он отображается как пустые списки ([]). Но если я обычно печатаю переменную на странице html без использования цикла for для каждого элемента, тогда он печатает. Нет проблем с тем, как я передаю списки с моих view.py на мою страницу html, потому что другие работают нормально. Почему это с этим?

+0

Не стоит также задавать два не связанных друг с другом вопроса «также, еще один вопрос». – Gezim

+0

Вы говорите, что одновременно выполняются условия 'if' и' else'? !! – Gezim

+0

@ Gezim, извините, будет держать этот ум! И я думаю, что Кевин ударил ноготь по голове. Я чувствую, что это не так, как если бы и другие выполнялись, то это было то, что обе переменные указывали на одно и то же место, поэтому независимо от того, что выполнено, обе переменные получили одинаковые значения. –

ответ

2

Переменные alttrue и altfalse оба указывают на один и тот же список, поэтому добавление к одному будет влиять и на другое. Вы должны создать два отдельных списка:

alttrue = [] 
altfalse = [] 
+0

Спасибо @Kevin! Ты был прав. Не думал об этом так. –

Смежные вопросы