def retrieve_author(self, author_id, show=True, verbose=False): #{{{ retrieve author info import warnings import numpy as np import pandas as pd from urllib import quote from urllib2 import urlopen from utils import _parse_author_retrieval from bs4 import BeautifulSoup as bs #TODO: Verbose mode; ''' Search for specific authors Details: http://api.elsevier.com/documentation/AuthorRetrievalAPI.wadl returns a dictionary ''' # parse query dictionary url = self._author_retrieve_url_base +\ '{}?apikey={}&httpAccept=application/xml'.format(author_id, self.apikey) soup = bs(urlopen(url).read(), 'lxml') with open('test.xml', 'wb') as testxml: testxml.write(soup.prettify()) author_info = _parse_author_retrieval(soup) # nothing find if not author_info: print 'No matched record found!' return None if show: print 'Name: %s' %(author_info['first-name'] + ' ' + author_info['last-name']) print 'Affiliation: %s (%s)' %(author_info['current-affiliation'][0]['name'],\ author_info['current-affiliation'][0]['address']) # }}} return author_info
def retrieve_author(self, author_id, show=True, verbose=False, save_xml='./author_xmls'): #{{{ retrieve author info ''' Search for specific authors Details: http://api.elsevier.com/documentation/AuthorRetrievalAPI.wadl returns a dictionary ''' # parse query dictionary url = self._author_retrieve_url_base +\ '{}?apikey={}&httpAccept=application/xml'.format(author_id, self.apikey) soup = bs(urlopen(url).read(), 'lxml') if save_xml is not None: if not os.path.exists(save_xml): os.makedirs(save_xml) with io.open('%s/%s.xml' %(save_xml, author_id), 'w', encoding='utf-8') as author_xml: author_xml.write(soup.prettify()) author_info = _parse_author_retrieval(soup) # nothing find if not author_info: print 'No matched record found!' return None if show: print 'Name: %s' %(author_info['first-name'] + ' ' + author_info['last-name']) print 'Affiliation: %s (%s)' %(author_info['current-affiliation'][0]['name'],\ author_info['current-affiliation'][0]['address']) # }}} return author_info
def retrieve_author(self, author_id): ''' Search for specific authors Details: http://api.elsevier.com/documentation/AuthorRetrievalAPI.wadl Parameters ---------------------------------------------------------------------- author_id : str Author id in Scopus database. Returns ---------------------------------------------------------------------- dict Dictionary of author information. ''' par = {'apikey': self.apikey, 'httpAccept': 'application/json'} r = requests.get('%s/%s' % (APIURI.AUTHOR, author_id), params=par) js = r.json() try: return _parse_author_retrieval(js) except: raise ValueError('Author %s not found!' % author_id)