Parse Geburt und Tod stammt aus Wikipedia?

8

Ich versuche ein Python-Programm zu schreiben, das Wikipedia nach Geburts- und Todesdaten für Menschen durchsuchen kann.

Zum Beispiel wurde Albert Einstein geboren: 14. März 1879; gestorben: 18. April 1955.

Ich begann mit Einen Wikipedia-Artikel mit Python holen

%Vor%

Das funktioniert so weit wie es geht. page2 ist die XML-Repräsentation des Abschnitts von Albert Einsteins Wikipedia-Seite.

Und ich habe mir dieses Tutorial angesehen, jetzt da ich die Seite im XML-Format habe ... Ссылка , aber ich verstehe nicht, wie ich die gewünschten Informationen (Geburts- und Sterbedaten) aus dem XML herausholen kann. Ich habe das Gefühl, dass ich nah sein muss, und dennoch habe ich keine Ahnung, wie ich von hier aus vorgehen soll.

BEARBEITEN

Nach ein paar Antworten habe ich BeautifulSoup installiert. Ich bin jetzt an der Stelle, wo ich drucken kann:

%Vor%

Also, viel näher, aber ich weiß immer noch nicht, wie ich das Todesdatum in diesem Format zurückgeben kann. Es sei denn, ich fange an Dinge mit re zu analysieren? Ich kann das, aber ich habe das Gefühl, dass ich für diesen Job das falsche Werkzeug benutze.

    
JBWhitmore 03.09.2012, 15:24
quelle

4 Antworten

7

Sie können eine Bibliothek wie BeautifulSoup oder lxml , um die Antwort html / xml zu analysieren.

Sie können auch einen Blick auf Requests werfen, was sehr viel ist Cleaner API für Anfragen.

Hier ist der Arbeitscode, der Requests , BeautifulSoup und re verwendet, wohl nicht die beste Lösung hier, aber er ist ziemlich flexibel und kann für ähnliche Probleme erweitert werden:

%Vor%

Per @ JBernardos Vorschlag mit JSON-Daten und mwparserfromhell , eine bessere Antwort für diesen speziellen Anwendungsfall:

%Vor%     
K Z 03.09.2012 15:31
quelle
5

Erstens: Die wikipedia-API erlaubt die Verwendung von JSON anstelle von XML und das wird die Dinge viel einfacher machen.

Second : Es müssen keine HTML / XML-Parser verwendet werden (der Inhalt ist weder HTML noch der Container). Was Sie analysieren müssen, ist das Wiki Format innerhalb des "revisions" Tags des JSON.

Überprüfen Sie einige Wiki-Parser hier

Was hier verwirrend scheint, ist, dass die API Ihnen erlaubt, ein bestimmtes Format (XML oder JSON) anzufordern, aber das ist nur ein Container für Text in dem echten Format, das Sie analysieren wollen:

Dieser: {{Birth date|df=yes|1879|3|14}}

Mit einem der Parser im obigen Link können Sie das tun.

    
JBernardo 03.09.2012 15:43
quelle
4

Benutze zuerst pywikipedia . Es ermöglicht Ihnen, Artikeltext, Vorlagenparameter usw. über eine abstrakte abstrakte Schnittstelle abzufragen. Zweitens würde ich mit der Persondata Vorlage gehen (gegen Ende des Artikels schauen). Langfristig könnte es auch interessant sein, Wikidata , das mehrere Monate dauern wird, einzuführen, aber es wird sich ändern Die meisten Metadaten in Wikipedia-Artikeln sind leicht abfragbar.

    
Tgr 03.09.2012 19:43
quelle
1

Die Vorlage persondata ist jetzt veraltet und Sie sollten stattdessen auf Wikidata zugreifen. Siehe Wikidata: Datenzugriff . Meine frühere (jetzt veraltete) Antwort von 2012 war wie folgt:

  

Was Sie tun sollten, ist die Analyse der {{persondata}} Vorlage, die in den meisten biographischen Artikeln gefunden wurde. Es gibt bereits vorhandene Tools zum einfachen, programmatischen Extrahieren solcher Daten , mit Ihrem vorhandenen Wissen und den anderen hilfreichen Antworten, die ich bin sicher, dass Sie das machen können.

    
Jobjörn Folkesson 04.09.2012 09:25
quelle