我正试图从scopusapi抓取文章的数据。 我有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(例如,第一页的第一篇文章):
^{pr2}$我可以很容易地从主视图中获取一些标准字段:
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'
with 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']]
这种方法很有效,但有时关键字会丢失。另外,scopusapi密钥的请求限制为(每周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
那么,我可以不需要额外的请求就获得引文吗?
只有在完整的视图中,才能使用单个查询获取引用。 (仅限订户)
相关问题 更多 >
编程相关推荐