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.
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:
Per @ JBernardos Vorschlag mit JSON-Daten und mwparserfromhell
, eine bessere Antwort für diesen speziellen Anwendungsfall:
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.
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.
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.
Tags und Links python mediawiki mediawiki-api wikipedia wikipedia-api