Я пытаюсь обходить данные статей из 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
Таким образом, я могу получить цитаты, без дополнительного запроса?
Вы получаете ссылки (статьи, приведенные в статье, которые вы получили) таким образом, а не цитаты (статьи, ссылающиеся на полученную статью). Я также ищу способ получить цитаты из scopus api, но я не думаю, что это возможно. – valleymanbs