私は人のための出生と死の日付のためにウィキペディアを検索できるPythonプログラムを書こうとしています。ウィキペディアの出生と死亡の日付を解析しますか?
たとえば、アルバートアインシュタインは1879年3月14日に生まれました。死亡した:1955年4月18日
は、私はこれは、限り、それが行くように働く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()
から始まりました。 page2
はアルバート・アインシュタインのウィキペディアのページのxml表現です。
そしてこのチュートリアルでは、xml形式のページがあるので、http://www.travisglines.com/web-coding/python-xml-parser-tutorialというページがありますが、xmlから必要な情報(誕生日と死亡日)を取得する方法を理解できません。私は近くにいなければならないと感じていますが、私はここからどのように進むのか分かりません。いくつかの応答の後
EDIT
、私は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
を使って構文解析を開始しない限り?私はそれをすることができますが、私はこの仕事に間違ったツールを使用しているように感じます。
XMLパーサーはそれ以上の手助けをしません。 JBernardoの言うことを読んでください:データをjson形式でフェッチし、専用MWパーサを使用してください。 – georg
私は完全なコードを '/'を使用して/使用せずに添付して、それを解析しました。 –
あなたのUser-Agentによってブラウザを偽装しようとしないでください。 [ウィキメディアのユーザ - エージェントポリシー](http://meta.wikimedia.org/wiki/User-Agent_policy)によると、 "連絡先情報付きの有益なユーザエージェントの文字列"を使用する必要があります。 – svick