Sto provando a scrivere un programma python in grado di cercare wikipedia per le date di nascita e morte per le persone.Parse date di nascita e morte da Wikipedia?
Ad esempio, Albert Einstein nacque: 14 marzo 1879; è morto: 18 aprile 1955.
Ho iniziato con Fetch a Wikipedia article with Python
import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
infile = opener.open('http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=Albert_Einstein&format=xml')
page2 = infile.read()
Questo funziona per quanto va. page2
è la rappresentazione xml della sezione dalla pagina wikipedia di Albert Einstein.
E ho guardato questo tutorial, ora che ho la pagina in formato xml ... http://www.travisglines.com/web-coding/python-xml-parser-tutorial, ma non capisco come ottenere le informazioni che voglio (date di nascita e morte) dal xml. Mi sento come se dovessi essere vicino, eppure, non ho idea di come procedere da qui.
EDIT
Dopo alcune risposte, ho installato BeautifulSoup. Ora sono nella fase in cui posso stampare:
import BeautifulSoup as BS
soup = BS.BeautifulSoup(page2)
print soup.getText()
{{Infobox scientist
| name = Albert Einstein
| image = Einstein 1921 portrait2.jpg
| caption = Albert Einstein in 1921
| birth_date = {{Birth date|df=yes|1879|3|14}}
| birth_place = [[Ulm]], [[Kingdom of Württemberg]], [[German Empire]]
| death_date = {{Death date and age|df=yes|1955|4|18|1879|3|14}}
| death_place = [[Princeton, New Jersey|Princeton]], New Jersey, United States
| spouse = [[Mileva Marić]]&nbsp;(1903–1919)<br>{{nowrap|[[Elsa Löwenthal]]&nbsp;(1919–1936)}}
| residence = Germany, Italy, Switzerland, Austria, Belgium, United Kingdom, United States
| citizenship = {{Plainlist|
* [[Kingdom of Württemberg|Württemberg/Germany]] (1879–1896)
* [[Statelessness|Stateless]] (1896–1901)
* [[Switzerland]] (1901–1955)
* [[Austria–Hungary|Austria]] (1911–1912)
* [[German Empire|Germany]] (1914–1933)
* United States (1940–1955)
}}
Quindi, molto più vicino, ma io ancora non so come restituire il death_date in questo formato. A meno che non inizi a analizzare le cose con re
? Posso farlo, ma sento che utilizzerei lo strumento sbagliato per questo lavoro.
Un parser XML non ti aiuterà ulteriormente. Leggi cosa dice JBernardo: recupera i dati in formato json e usa un parser dedicato MW. – georg
Ho allegato il codice completo sia con che senza 're' per analizzarlo. –
Per favore, non provare a imitare un browser dal tuo User-Agent. Secondo [la politica di utente-agente di Wikimedia] (http://meta.wikimedia.org/wiki/User-Agent_policy), è necessario utilizzare "una stringa di User-Agent informativo con le informazioni di contatto". – svick