1. はじめに
2.経緯
・前回は主に、日本国内がサンデーサイレンス系で埋め尽くされているのを発見。
- 世界ではどうなっているのか気になったので、調べてみることに。
3. コード
- 前回のはJRDBのデータを使ったけど、wikipedia(en)の情報も使えそうだったので、こちらを利用させてもらう。
- さてスクレイピングやるのかなーと思っていると、dbpediaというサイトを発見して、sparQLという言語?でクエリを取ると簡単に情報を得られるのを発見。これを使わせてもらう。
この図の右下部分(父、父父)情報を使えばいいので、下記のような書き方で取得できた。
en.wikipediaには、生まれ年毎に有名な競走馬の情報が入っているので、この情報を参考に、
#!pip install sparqlwrapper
def getdata(year):
my_variable = "<http://dbpedia.org/resource/Category:{}_racehorse_births>".format(year)
print(my_variable)
sparql.setQuery("""
select distinct * where {
?racehorse <http://dbpedia.org/ontology/wikiPageWikiLink>"""+ my_variable +""" .
?racehorse rdfs:label ?name .
?racehorse <http://dbpedia.org/property/sire> ?sire .
?racehorse <http://dbpedia.org/property/grandsire> ?grandsire .
}
""")
results = sparql.query().convert()
items = []
for val in results["results"]["bindings"]:
if val["name"]["xml:lang"] == "en":
items.append([val["name"]["value"],val["sire"]["value"].replace("http://dbpedia.org/resource/","")])
items.append([val["sire"]["value"].replace("http://dbpedia.org/resource/",""),val["grandsire"]["value"].replace("http://dbpedia.org/resource/","")])
return pd.DataFrame(items)
これを1700年~2020年まで取得。データをキレイにして最終的にこんな形に。