【发布时间】:2015-08-12 13:43:09
【问题描述】:
我已在http://www.developers.elsevier.com/action/devprojects 注册。我创建了一个项目并获得了我的 scopus 密钥:
现在,使用这个生成的密钥,我想通过firstname、lastname 和subjectarea 查找作者。我从允许访问 Scopus 的大学网络发出请求(我可以完全手动访问 Scopus 搜索,从 Firefox 使用它没有问题)。但是,我想通过编写一个简单的脚本来自动化我的 Scopus 挖掘。我想通过给他/她firstname、lastname 和subjectarea 来查找作者的出版物。
这是我的代码:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
from scopus import SCOPUS_API_KEY
scopus_author_search_url = 'http://api.elsevier.com/content/search/author?'
headers = {'Accept':'application/json', 'X-ELS-APIKey': SCOPUS_API_KEY}
search_query = 'query=AUTHFIRST(%) AND AUTHLASTNAME(%s) AND SUBJAREA(%s)' % ('John', 'Kitchin', 'COMP')
# api_resource = "http://api.elsevier.com/content/search/author?apiKey=%s&" % (SCOPUS_API_KEY)
# request with first searching page
page_request = requests.get(scopus_author_search_url + search_query, headers=headers)
print page_request.url
# response to json
page = json.loads(page_request.content.decode("utf-8"))
print page
SCOPUS_API_KEY 看起来像这样:SCOPUS_API_KEY="xxxxxxxx"。
虽然我可以通过我的大学网络完全访问 scopus,但我收到了这样的回复:
{u'service-error': {u'status': {u'statusText': u'Requestor 配置设置不足以访问此资源。', u'statusCode': u'AUTHENTICATION_ERROR'}}}
生成的链接如下所示:http://api.elsevier.com/content/search/author?query=AUTHFIRST(John)%20AND%20AUTHLASTNAME(Kitchin)%20AND%20SUBJAREA(COMP),当我单击它时,它会显示一个 XML 文件:
<service-error><status>
<statusCode>AUTHORIZATION_ERROR</statusCode>
<statusText>No APIKey provided for request</statusText>
</status></service-error>
或者,当我将 scopus_author_search_url 更改为 "http://api.elsevier.com/content/search/author?apiKey=%s&" % (SCOPUS_API_KEY) 时,我得到:
{u'service-error': {u'status': {u'statusText': u'Requestor configuration settings insufficient for access to this resource.', u'statusCode': u'AUTHENTICATION_ERROR'}}} 和 XML 文件:
<service-error>
<status>
<statusCode>AUTHENTICATION_ERROR</statusCode>
<statusText>Requestor configuration settings insufficient for access to this resource.</statusText>
</status>
</service-error>
此问题的原因可能是什么,我该如何解决?
【问题讨论】:
-
我认为您缺少身份验证,也许您的浏览正在发送它而您没有看到...您是否有任何可以使用的凭据?
-
您在注册时是否被要求注册一个网站,您的 URI 请求是否来自该网站?
-
允许您使用大学网络中的 Web 界面并不意味着您可以在没有额外凭据的情况下使用 API。也许那个 API 密钥没有给你适当的授权。
标签: python web-crawler scopus