9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DBpediaを使って、検索語からデータ取得

Last updated at Posted at 2020-02-11

##環境
python3

##準備
まず、DBpediaからデータ取得を簡単にしてくれるライブラリを持ってくる

pip install sparqlwrapper

取得したいデータを決める

まず、DBpediaのページから、決定する。
http://ja.dbpedia.org/page/%E4%B8%AD%E4%BA%8C%E7%97%85%E3%81%A7%E3%82%82%E6%81%8B%E3%81%8C%E3%81%97%E3%81%9F%E3%81%84!

URLで、「http://ja.dbpedia.org/page/{検索語}」
って感じで、
指定する。なお、大文字小文字も区別されるので、注意。
例えば、akb48はヒットしないが、AKB48はヒットする。
なので、wikipedia本家から実際に検索してみて、検索語を確認すれば良い。スクリーンショット 2020-02-11 17.44.59.png

プログラム

取得したいデータを指定する際には、
DBpediaに「dbpedia-owl:abstract」みたいに書いてあるものを
追加していくことになる。
その場合は、select文の「?a」みたいに任意の名前を追加していって、
whereの中でタグを追加していく。
なお、追加するたびに、セミコロンは忘れてはいけない。

nogizaka-suko.py
# -*- coding: utf-8 -*-
from SPARQLWrapper import SPARQLWrapper

sparql = SPARQLWrapper(endpoint='http://ja.dbpedia.org/sparql', returnFormat='json')
sparql.setQuery("""                                                                                                                                                                      
    PREFIX dbpedia-owl:  <http://dbpedia.org/ontology/>                                                                                                                                  
    SELECT ?a ?b ?o WHERE {                                                                                                                                                                 
<http://ja.dbpedia.org/resource/中二病でも恋がしたい!> rdfs:label ?label;
<http://dbpedia.org/ontology/director> ?a ;
<http://dbpedia.org/ontology/productionCompany> ?b ;
<http://dbpedia.org/ontology/abstract> ?o .
     }                                                                                                                    
""")
results = sparql.query().convert()


print(results)


取得結果

こんな感じで、タイトルも概要も取得できる。
スクリーンショット 2020-02-11 17.39.37.png

感想

dbPediaは大学生の時授業内でやったことあったけど、めっちゃ前だったので使い方とかほとんど忘れていた。
しかもあの時はPHPでやっていたので、今回pythonでやってみたらうまくいったので嬉しい。

あと、直接HTMLのタグを指定してwikipediaからスクレイピングするなんてナンセンス!DBpedia使いましょうねみたいな記事を見たことあるけど、
DBpediaだけじゃ全てのデータを取得できるわけではなさそうなので、
結局はHTMLのpタグの要素を動的に取得したりするみたいな処理をやる必要がありそう。

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?