Próbuję napisać program python, który może przeszukać wikipedia dla dat narodzin i śmierci dla ludzi.Parse daty urodzenia i śmierci z Wikipedii?
Na przykład urodził się Albert Einstein: 14 marca 1879; zmarł: 18 kwietnia 1955.
Zacząłem 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()
Działa to tak daleko, jak to idzie. page2
to reprezentacja xml sekcji ze strony wikipedii Alberta Einsteina.
I spojrzałem na ten samouczek, teraz, gdy mam stronę w formacie xml ... http://www.travisglines.com/web-coding/python-xml-parser-tutorial, ale nie rozumiem, jak uzyskać informacje, które chcę (daty urodzenia i śmierci) z xml. Czuję, że muszę być blisko, a jednak nie mam pojęcia, jak przejść dalej.
EDIT
Po kilku odpowiedzi, mam zainstalowane BeautifulSoup. Jestem teraz na etapie, na którym można drukować:
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)
}}
więc znacznie bliżej, ale wciąż nie wiem jak zwrócić death_date w tym formacie. O ile nie zacznę analizować danych za pomocą re
? Mogę to zrobić, ale czuję, że używałbym niewłaściwego narzędzia do tej pracy.
Parser XML nie pomoże ci dalej. Przeczytaj, co mówi JBernardo: pobierz dane w formacie json i użyj dedykowanego parsera MW. – georg
Dołączyłem kompletny kod zarówno z/bez użycia 're' do parsowania. –
Nie próbuj podszywać się pod przeglądarkę użytkownika. Zgodnie z [polityką użytkownika Wikimedia User-Agent] (http://meta.wikimedia.org/wiki/User-Agent_policy) powinieneś użyć "informacyjnego ciągu znaków użytkownika z danymi kontaktowymi". – svick