Я пытаюсь написать программу на Python, которая может искать в Википедии даты рождения и смерти людей.
Например, Альберт Эйнштейн родился: 14 марта 1879 г .; умер: 18 апреля 1955 г.
Я начал с Получите статью из Википедии с помощью 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()
Это работает, насколько это возможно. page2
- это xml-представление раздела со страницы википедии Альберта Эйнштейна.
И я просмотрел этот учебник, теперь, когда у меня есть страница в формате xml ... http://www.travisglines.com/web-coding/python-xml-parser-tutorial, но я не понимаю, как получить нужную мне информацию (даты рождения и смерти) из файл xml. Я чувствую, что должен быть рядом, и все же я не знаю, что делать дальше.
ИЗМЕНИТЬ
После нескольких ответов я установил BeautifulSoup. Я сейчас на стадии, когда могу напечатать:
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)
}}
Итак, гораздо ближе, но я все еще не знаю, как вернуть death_date в этом формате. Разве я начну разбирать вещи с re
? Я могу это сделать, но мне кажется, что я буду использовать не тот инструмент для этой работы.
re
для его анализа, так и без него. - person K Z   schedule 03.09.2012