2015-05-28 2 views
1

Я пытаюсь обходить данные статей из Scopus api. У меня есть ключ api и вы можете получать поля со стандартного вида.scopus ключевые слова и цитаты обход

Вот пример:

Во-первых, инициализация (апи, поиск запросов и заголовков)

import json 
import requests 

api_resource = "https://api.elsevier.com/content/search/scopus?" 
search_param = 'query=title-abs-key(big data)' # for example 

# headers 
headers = dict() 
headers['X-ELS-APIKey'] = api_key 
headers['X-ELS-ResourceVersion'] = 'XOCS' 
headers['Accept'] = 'application/json' 

Теперь я могу получить статью JSON (например, первая статья из первой страницы):

# request with first searching page 
page_request = requests.get(api_resource + search_param, headers=headers) 
# response to json 
page = json.loads(page_request.content.decode("utf-8")) 
# List of articles from this page 
articles_list = page['search-results']['entry'] 

article = articles_list[0] 

Я могу легко получить основные поля со стандартного вида:

title = article['dc:title'] 
cit_count = article['citedby-count'] 
authors = article['dc:creator'] 
date = article['prism:coverDate'] 

Однако мне нужны ключевые слова и цитаты из этой статьи. я решил проблему с помощью ключевых слов с дополнительной просьбой к URL статьи:

article_url = article['prism:url'] 
# something like this: 
# 'http://api.elsevier.com/content/abstract/scopus_id/84909993848' 

с полем = authkeywords

article_request = requests.get(article_url + "?field=authkeywords", headers=headers) 
article_keywords = json.loads(article_request.content.decode("utf-8")) 
keywords = [keyword['$'] for keyword in article_keywords['abstracts-retrieval-response']['authkeywords']['author-keyword']] 

Этот метод работает, но иногда ключевые слова отсутствуют. Кроме того, scopus api-key имеет предел запросов (10000 в неделю), и этот способ не оптимален.

Могу ли я сделать это проще?

Следующий вопрос о ссылках. Для того, чтобы найти цитаты из статей, я отправить еще один запрос еще раз, с использованием статьи [ «Ид»] поле:

citations_response = requests.get(api_resource + 'query=refeid(' + str(article['eid']) + ')', headers=headers) 
citations_result = json.loads(citations_response.content.decode("utf-8")) 
citations = citations_result['search-results']['entry'] # list of citations 

Таким образом, я могу получить цитаты, без дополнительного запроса?

+0

Вы получаете ссылки (статьи, приведенные в статье, которые вы получили) таким образом, а не цитаты (статьи, ссылающиеся на полученную статью). Я также ищу способ получить цитаты из scopus api, но я не думаю, что это возможно. – valleymanbs

ответ

0

Вы можете получить ссылки с одним запросом только с представлением COMPLETE. (только подписчик)

Смежные вопросы