Python: AttributeError: экземпляр элемента не имеет атрибута «firstchild»

Я искал везде, но не могу найти ничего, что могло бы решить мою проблему. Я довольно новичок в Python, поэтому, возможно, я что-то не понимаю. Ошибка, которую я продолжаю получать, это «AttributeError: экземпляр элемента не имеет атрибута« firstchild »»

# Imports
import urllib2
import re
from xml.dom import minidom


def main():
    pass

if __name__ == '__main__':
    main()


# Get RSS feed source
briefingRSS = minidom.parse(urllib2.urlopen('http://rss.briefing.com/Investor/RSS/UpgradesDowngrades.xml'))

# Find each Upgrade and Downgrade listed in XML file
channel = briefingRSS.getElementsByTagName("channel")[0]
items = channel.getElementsByTagName("item")

# Get info from each item
for item in items:
    getTicker = item.getElementsByTagName("title")[0].firstchild.data
    ticker = str(getTicker[1].split("<")[0])
    print ticker

Редактировать: Хорошо, спасибо, что указали на C в firstchild. Но оказывается, программа выдает по одной букве в строке. Я пытаюсь захватить тикер, длина которого может достигать 5 символов. Как мне заставить его дать мне полный тикер?

Вот фрагмент текущего XML для элемента:

<image>
<url>http://rss.briefing.com/favicon.ico</url>
<title>Briefing.com - Upgrades Downgrades Calendar</title>
<link>
http://www.briefing.com/Investor/Public/Calendars/UpgradesDowngrades.htm
</link>
</image>

person BigBlackBunny    schedule 14.11.2013    source источник
comment
Когда вы получаете такую ​​ошибку, может быть полезно распечатать все атрибуты объекта. Это проще всего сделать, если вы используете интерактивный терминал, но даже в сценарии element = item.getElementsByTagName("title")[0], а затем print dir(element) сделают это. Затем вы увидите, что нет ни атрибута с именем firstChild, ни атрибута с именем firstchild.   -  person abarnert    schedule 14.11.2013


Ответы (1)


Свойство firstChild требует заглавной буквы "C" в середине.

Документация не очень ясна, потому что она написана с точки зрения стандарта DOM и того, как сопоставить стандарт с Python, поэтому может помочь просто открыть исходный код minidom.py и увидеть методы и свойства, которые он определяет и использует.

person Duncan    schedule 14.11.2013
comment
face-palm Не могу поверить, что не видел этого. - person BigBlackBunny; 14.11.2013