Google Scholar Profiles mit Python scrapen

Google Scholar ist ein Google Applikation, die automatisch alle Publikationen seinen Autoren zuordnet und so schnell den wissenschaftlichen Output von Forschern berechnen kann. Zwei wichtige Kennzahlen sind die Anzahl an Zitationen, die ein Wissenschaftler akkumuliert hat sowie seinen H-Index. Dieses folgende kleine Python-Skript zeigt Dir, wie man diese zwei Kennzahlen für eine Liste von Wissenschaftlern auslesen kann und gegeneinander plottet.

Als erstes schreiben wir eine Funktion, die es einem erlaubt aus einem bekannten Google Scholar Profil, den H-Index eines Wissenschaftlers auszulesen. Leider konnte ich bis jetzt noch kein Pythonmodul entdecken, dass einem das Auslesen dieses Wertes erlaubt.

def gethindex(search_address):
    response = urllib2.urlopen(search_address)
    html = response.read()#3
    if html.find("h-index</a></td><td class") == -1:
        pass #print "This site has not h-index
    else: # site is a valid patent site, after text searching and cleaning, attache title, abstract and claims to doclist
        #finds title text between the characters FONT size... and FONT
        hindex = html.split('h-index</a></td><td class="gsc_rsb_std">')[-1].split('</td><td class="gsc_rsb_std">')[0]
        return hindex

Im nächsten Schritt erstellen wir eine Liste aus den Namen von Wissenschaftlern, die ein Profil auf Google Scholar besitzen. Zuvor laden wie das Python-Modul scholarly, dass es uns erlaubt Google Scholar nach einem Namen zu durchsuchen und aus seinem gefundenen Profil bestimmte Werte auszulesen (ein ähnliches Modul scheint Scholar.py zu sein, dass ich noch nicht ausprobiert habe). In diesem Fall lesen wir die Anzahl der Zitationen aus. Parallel dazu bauen wir eine dreispaltige Liste auf, die in einer Zeile den Namen des Wissenschaftlers, seinen H-Index und seine Anzahl an Zitationen enthält.

import scholarly
import urllib2

authorlist = ['Ulrich F. Keyser', 'Aleksandra Radenovic', 'Mahendran Radhakrishnan', 
              'Vivek Thacker', ' Silvia Hernandez-Ainsa','Nicholas Bell',
              'Fernando Moreno Herrero', 'Cees Dekker' , 'Stefano Pagliara',
              'Ralph MM Smeets','Tim Liedl', 'Nadanai Laohakunakorn', 'Meni Wanunu',
          'Mark Akeson', 'Tim Albrecht','Dario Anselmetti', 'Rashid Bashir',
          'Andreas B. Dahlin','Joshua B. Edel','Adam R. Hall',
          'Diego Krapf','MinJun Kim','Jeremy Lee', 'Derek Stein', 'Giovanni Maglia',
          'Michael Mayer','Aleksandr Noy',  'mark platt',
      'Jacob Rosenstein','Friedrich C. Simmel','Vincent Tabard-Cossa','Gregory Timp', 
      'Anton Zilman','Michael Zwolak','Lorenz J. Steinbock' ]
hindexlist = [[],[],[]]
for i in authorlist:
    a = scholarly.search_author(i).next()
    hindexlist[0].append(i)
    search_query = scholarly.search_author(i)
    author = search_query.next().fill()
    link= str('https://scholar.google.com'+ a.url_citations)
    hindex = gethindex(link)
    hindexlist[1].append(hindex)
    hindexlist[2].append(a.citedby)

Anschließend plotten wir diese zwei Variablen gegeneinander.

y= hindexlist[1]

y = map(int, y)
x= hindexlist[2]

fig, ax = plt.subplots(figsize=(8, 5))
ax.set(xscale="log", yscale="log")
ax.scatter(x,y)
ax.set_xlabel("Number of citations", fontsize=12)
ax.set_ylabel("H-Index", fontsize=12)
#plt.xlim(xmax=3)
plt.ylim(ymin=3)
for i, txt in enumerate(hindexlist[0]):
    ax.annotate( txt[:4], ( x[i] , y[i]  ) )
    #print txt, i

#plt.grid()
#plt.show()

Im Plott kann man gut erkennen, dass mit steigender Anzahl an Zitationen ein höherer H-Index einhergeht.

hindex VS citations Python Google Scholar profile scrapen

 

 

Please follow and like us:

Leave a Reply

Your email address will not be published. Required fields are marked *