2012-04-08 10 views
1

Ich werde durch Asheesh Laroia Präsentation von PyCon 2010 „das Web Scrape“ und ich habe eine Frage zu einer bestimmten Codezeile, die diese Zeile:Mit getElementsByTagName von xml.dom.minidom

title_element = parsed.getElementsByTagName('title')[0] 

von der Funktion:

def main(filename): 
    #Parse the file 
    parsed = xml.dom.minidom.parse(open(filename)) 
    # Get title element 
    title_element = parsed.getElementsByTagName('title')[0] 
    # Print just the text underneath it 
    print title_element.firstChild.wholeText 

ich weiß nicht, welche Rolle ‚[0]‘ am Ende der Zeile durchführt. Kopiert 'xml.dom.minidom.parse' die Eingabe in eine Liste?

Antwort

4

parse() gibt keine Liste zurück; getElementsByTagName() tut. Sie fragen nach allen Elementen mit einem Tag <title>. Die meisten Tags können in einem Dokument mehrmals vorkommen. Wenn Sie nach diesen Elementen fragen, erhalten Sie mehrere. Der offensichtliche Weg, sie zurückzugeben, ist eine Liste oder ein Tupel.

In diesem Fall erwarten Sie nur ein <title> Tag im Dokument, also nehmen Sie einfach das erste Element in der Liste.

2

Diese Methode ist (getElementsByTagName) Dokumentation sagt:

Suchen in allen Nachkommen (direkte Kinder, Kinder Kinder, etc.) mit einem bestimmten Elementtyp-Namen.

Da es „alle Nachkommen“ erwähnt, dann ja, in alle Ähnlichkeit gibt es eine Liste, dass dieser Code nur Indizes das erste Element zu sehen.

Blick auf den Code dieser Methode (in Lib/xml/dom/minidom.py) - es gibt tatsächlich eine Liste.

Verwandte Themen