【Python】にわかエンジニアもどきによるWikipediaライブラリの浅い解説【Wikipedia】
☆読み飛ばしても何ら問題ない前置き
唯坂 優(たださか ゆう)です。
平素よりちょくちょくPython系の記事を書いております。
趣味でコード書いてるだけの
にわかエンジニア(と名乗るのもおこがましい)ですが、
大変楽しくやらせていただいております。
さて。
今後書いていきたいコードの中で、
『Wikipediaの記事から文章を取得したいな〜』
なんて箇所があり、ググってみると
そのものズバリなwikipediaライブラリなるものがある模様。
せっかくなので、勉強がてらコイツを使ってどんなことができるのかまとめて記事にしてみようと思い、徒然なるままにキーボードを叩いておる始末。
☆wikipedia.search(ホニャホニャ)
テストコード1
import wikipedia
wikipedia.set_lang("ja") #言語を日本語に指定
print(wikipedia.search("犬"))
そういえば申し遅れましたがこちらのWikipediaライブラリ、
標準ライブラリではないためあらかじめインストールしておく必要があります。(せずにいきなり上記のコード書くとエラー吐きます。)
わからない方はpip installでググってね。
大体のライブラリはそれでインストールできます。
wikipedia.set_lang("ja")
で言語を日本語に指定できます。
この指定をしないとデフォルトでは英語で表示されちゃう
ようなので要注意。
wikipedia.search(ホニャホニャ)
でホニャホニャを含む記事があるか検索できます。
テストコードでは犬をキーワードに設定しています。
特に意味はないです。
さて実行結果はこちら。
犬で検索をかけた結果がこのようにlist型で返ってきます。
R言語とか犬と何の関係があるのか分かりませんが、出てきちゃったもんはしょうがない。
何個かキーワードを変えて試してみましたが、
よりlistの先頭に近いものが関連度高いように感じました。
ところでコレ、今回は犬という超メジャーワードだったからこんなに出たけれども存在しないワードを入力したらどうなるんだろう?
テストコード2
print(wikipedia.search("キュルルルうぉぉ"))
悲しげな空のlistがそこにはありました。
☆wikipedia.page(ホニャホニャ)
テストコード3
print(wikipedia.page("犬"))
ぱっと見ただの文字列にも見えちゃいますが、
このWikipediaPageオブジェクトをメソッド使ってあれやこれやするのが本領なので大成功です。
ちなみに先ほどのキュルルルうぉぉのような存在しないキーワードを入力すると、
テストコード4
print(wikipedia.page("キュルルルうぉぉ"))
こんな感じでエラー吐かれちゃいます。
エラー対策として、
先ほどのsearchと組み合わせて↓こんな書き方↓もできます。
テストコード5
_search=wikipedia.search("犬")
if len(_search)>=1:
print(wikipedia.page(_search[0]))
検索結果が一つ以上出てきた場合のみ記事を所得するやり方です。
このようにsearchの結果をスライスして引数として渡すこともできます。
さて、ここからは取得できた
WikipediaPageオブジェクトに使えるメソッドを手当たり次第試していきます!
※注記
記事内ではメソッドって言ってますが、
これメソッドって言っていいやつなのかさっぱりわかりません。
引数とかいらないし…
なのでニュアンスで感じ取ってください。
☆.categories
テストコード6
print(wikipedia.page("犬").categories)
みたところ記事についてるタグ的なものを一覧にしてくれる
ようですね。
識別子が何とかっていうのはよくわかりませんが「家畜」とか「モデル生物」とかのタグは使えそうだな?ということで、用例コードを書いてみました。
テストコード7
import wikipedia
wikipedia.set_lang("ja")
katiku=[]
for i in ["犬","牛","ワニ","ヒト","プラスチック"]:
page=wikipedia.page(i).categories
if "家畜" in page:
katiku.append(i)
print(katiku)
「犬」「牛」「ワニ」「ヒト」「プラスチック」のうち、家畜タグを持つ「犬」と「牛」だけ抜き出すことができました。これは案外使えそうだ。
☆.content
テストコード8
print(wikipedia.page("犬").content)
記事全文がテキストとして出力される感じですね。
長すぎるため省略しましたが、要所要所で
『== 定義 ==』とか『== 起源 ==』とかいったラベルが挟まるので
とっても見やすくて便利。
このラベル利用して欲しい部分だけの文章抜き出しなんかも可能かも。
☆.html
テストコード9
print(wikipedia.page("犬").html)
よくわからんが多分htmlを扱うモジュールと組み合わせたらうまくいきそうなオブジェクトが返ってきた。
BeautifulSoupを使ったテストコードを見本のつもりで書こうかとも思いましたがそうするとBeautifulSoupの説明も必要になってくるので割愛。各自ググってね。
☆.images
テストコード10
print(wikipedia.page("犬").images)
記事内に添付されている画像のURL一覧を取得できるメソッドのようです。
画像識別AIのデータ収集とかに使えるのかな…と思いましたけど
著作権的に大丈夫なのか…?
個人的には使いそうにないですね。
☆.links
テストコード11
print(wikipedia.page("犬").links)
記事内にリンクが貼られている記事のタイトルが一覧になって返ってきます。
連鎖的に関連する記事の情報を取得するとかには利用できそうですが量が多すぎてめちゃくちゃ重くなりそう。
☆.original_title
テストコード12
print(wikipedia.page("犬").original_title)
記事のタイトルが返ってくる。意味ないかと思ったけどこれ応用すればひらがな・カタカナ→漢字変換に使えたりしないかな。
テストコード13
import wikipedia
wikipedia.set_lang("ja")
print(wikipedia.page("カバン").original_title)
漢字からカタカナへの変換は僕がよく使ってる自然言語処理ライブラリのjanomeで
できるんですが、逆パターンがこれでできるようになりました。
ただこれ、ものによってちゃんと漢字になるやつとそうでないものがあるので実用性はイマイチ。例えば上記コードを『ミカン』で試したら出力が『ウンシュウミカン』になっちゃいました。
出力をjanomeにかけて読みが一致してるかどうかの判定噛ませたら使えるか。(脱線)
☆.pageid
テストコード14
print(wikipedia.page("犬").pageid)
おそらくWikipedia内での当該ページに振られた通し番号的なものですね。
こればっかりはほんとに使い方が思いつかなかった…
pageidから逆に引くこともできるのかな?
だとしたらrandomモジュールを利用して適当な記事を取得するコードも書けるけど
やり方がわかりませんでした。
☆.summary
テストコード15
print(wikipedia.page("犬").summary)
summary(要約・概要)の名の通り、当該記事の要約が出てきます。
普通にWikipedia開いた時に導入部分として表示されるやつですね。
.cotentと被り気味ですが、
こっちの方が出力の量が全然少ないので使い分けたら便利そう。
☆.url
テストコード16
print(wikipedia.page("犬").url)
当該ページのURLを表示してくれます。
引用元を掲載したい時に使えますね。
☆.references
テストコード17
print(wikipedia.page("犬").references)
記事内で引用されている参考文献(ネット上にあるもの)のURL一覧が取得できます。
関連するサイトをスクレイピングする際には使えるかな?
…以上!!
本当は使えるメソッド全部載せたかったんですけど使い所があまりに謎とか
よく分からなさすぎるという理由でいくつか割愛いたしました。
この記事が誰かの役に立ってくれたら幸いです。
↓一番の自信作です。ついでに読んでね↓
この記事が気に入ったらサポートをしてみませんか?