0
1

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.

Mendeley 上の論文読者数をPythonで取得する

Posted at

はじめに

研究者の方々は、目にした/書いた学術論文の引用数が気になることがあると思います。
引用数は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ではなく、タイトルを与えられるともう少しスマートだと思います。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?