はじめに
研究者の方々は、目にした/書いた学術論文の引用数が気になることがあると思います。
引用数はGoogle scholar 等で簡単に確認することができます。
引用数の前駆的な指標として、文献管理ソフトMendeley における読者数というものもあります。
こちらは少なくとも、Mendeleyを開かなければわからないように思えます。
そこで、スクレイピングの練習がてら、Mendeley reader 数を取得するスクリプトを作成してみました。
参考にした記事
[1] pythonでwebスクレイピング
[2] Webスクレイピングの注意事項一覧
環境
Windows
Python 3
スクリプト
全文は以下の通りです。
以下解説が続きます。
a.py
# Modules
import requests
# Constants
Mendeley = 'https://www.mendeley.com/catalogue/'
PaperID = []
PaperID.append("5a856ac7-0d75-3560-8824-9f9061f3eb50/")
# Functions
def SandwitchedText(text_source,text_1, text_2):
return text_source.split(text_1)[1].split(text_2)[0]
for a in PaperID:
r = requests.get(Mendeley + a)
text = r.text
print("Title : " + SandwitchedText(text, "\"title\":\"", "\",\"detail"))
print("readers : " + SandwitchedText(text, "readers:", ":"))
print("citations : " + SandwitchedText(text, "citations:", ":"))
- requests はスクレイピングに使えるパッケージです[1]。使用時はスクレイピングのルールに注意しましょう[2]。
- データを取得したい論文の情報として対応するURLを与えます。本記事では、有名な高温超伝導の論文を題材とします。スクリプト中変数Mendeleyの部分は固定で、URLのうち論文ごとに異なる部分をPaperIDのリストに与えてゆきます。
- SandwitchedTextとして、与えられた文字列text_sourceからtext_1, text_2で挟まれた部分を返す関数を定義しています。
- requests.get(url).text でURL に対応するページのソースを得ることができます。スクリプトでは、textの中にソースが文字列として格納されます。
- 最後に、ページのソースから、論文のタイトル、mendeley reader 数、引用数を取得、コンソールに出力します。ここで、ページのソースとにらめっこして、ソース中どこに必要な情報があるかを探し、SandwitchedText関数を使って情報を取得します。
終わりに
リスト内の論文の数を増やしていけば、いくつかの論文の情報をまとめて得られます。
論文のURLではなく、タイトルを与えられるともう少しスマートだと思います。