Python scopus关键词和引文爬行

Python scopus关键词和引文爬行,python,web-crawler,scopus,Python,Web Crawler,Scopus,我正在尝试从ScopusAPI抓取文章的数据。 我有api密钥,可以从标准视图接收字段 下面是一个例子: 首先,初始化(api、搜索查询和标题) 现在我可以收到文章json(例如,第一页的第一篇文章): 我可以从标准视图轻松获取一些主要字段: title = article['dc:title'] cit_count = article['citedby-count'] authors = article['dc:creator'] date = article['prism:coverDate

我正在尝试从ScopusAPI抓取文章的数据。 我有api密钥,可以从标准视图接收字段

下面是一个例子:

首先,初始化(api、搜索查询和标题)

现在我可以收到文章json(例如,第一页的第一篇文章):

我可以从标准视图轻松获取一些主要字段:

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']]
此方法有效,但有时缺少关键字。另外,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

那么,我可以无需额外请求就获得引用吗?

您只需一次查询就可以获得完整视图的引用。
(仅限订阅者)

您获得的是这样的参考文献(您获得的文章引用的文章),而不是引用文献(引用您获得的文章的文章)。我也在寻找从scopus api获取引用的方法,但我认为这是不可能的。注意:完整视图将只显示引用的部分信息,如作者id等更多信息,您需要REF视图。
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']]
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