Ключевые слова и цитаты
Я пытаюсь сканировать данные статей из Scopus api. У меня есть ключ API и я могу получить поля из стандартного представления.
Вот пример:
Во-первых, инициализация (API, поисковый запрос и заголовки)
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'
с field=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']]
Этот метод работает, но иногда отсутствуют ключевые слова. Кроме того, API-ключ scopus имеет лимит запросов (10000 в неделю), и этот способ не оптимален.
Могу ли я сделать это проще?
Следующий вопрос о цитатах. Чтобы найти цитаты из статей, я отправляю еще один запрос, используя поле article['eid']:
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
Итак, могу ли я получить цитаты без дополнительного запроса?
1 ответ
Вы можете получить ссылки с одним запросом только с полным представлением. (только подписчик)