私は、年齢、出身地、上院議員の以前の職業を取得したいと思います。 それぞれの上院議員の情報は、それぞれのページでWikipediaで入手できます。また、その名前ですべての上院議員を一覧表示する別のページがあります。 どうすればそのリストを見て、各上院議員のそれぞれのページへのリンクをたどり、私が望む情報を得ることができますか?pythonで複数のwikipediaページからデータをスクラップする方法は?
ここまでは私がこれまで行ってきたことです。
1。 (Pythonなし)DBpediaが存在し、上院議員を検索するためのクエリを書いたことを知りました。残念ながら、DBpediaのは、(もしあれば)それらのほとんどを分類していない:
SELECT ?senator, ?country WHERE { ?senator rdf:type <http://dbpedia.org/ontology/Senator> . ?senator <http://dbpedia.org/ontology/nationality> ?country }
クエリresultsは不十分です。
2。私が個々のwikiページから情報を検索して取り出すことを可能にするwikipedia
と呼ばれるPythonモジュールがあることを知りました。ハイパーリンクを見て、テーブルから上院議員名のリストを取得するために使用しました。
import wikipedia as w
w.set_lang('pt')
# Grab page with table of senator names.
s = w.page(w.search('Lista de Senadores do Brasil da 55 legislatura')[0])
# Get links to senator names by removing links of no interest
# For each link in the page, check if it's a link to a senator page.
senators = [name for name in s.links if not
# Senator names don't contain digits nor ,
(any(char.isdigit() or char == ',' for char in name) or
# And full names always contain spaces.
' ' not in name)]
この時点で私は少し失われています。ここではリストsenators
にすべての議員名だけでなく、他の名前(姓など)も含まれています。 wikipidia
モジュール(少なくとも私がAPIドキュメントで見出したもの)は、リンクをたどったりテーブルを検索する機能も実装していません。
StackOverflowで2つの関連エントリが役に立つと思われますが、両方とも(hereとhere)は1つのページから情報を抽出します。
誰も私に解決策を教えてもらえますか?
ありがとうございます!
美しいスープ! – benten
@ user2241910では、BeautifulSoupを使用して目的のWebサイトをスクラップし、興味のあるデータを抽出できると示唆しています。 – albert