通过SOAP访问ISI科学网

2024-09-27 02:21:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个python脚本,从isiwebofscience检索有关出版物的信息。我在GitHub上找到了domoritz的python脚本wos.py。它使用Suds连接到ISI科学网络服务。我已经将其导入到python脚本中,并按照注释中非常简短的说明尝试了以下代码:

from wos import *
soap = WokmwsSoapClient()
results = soap.search('Hallam')

然后我得到一个错误:

^{pr2}$

我查过密码了工作日. 以下是search函数:

def search(self, query):
    qparams = {
        'databaseID' : 'WOS',
        'userQuery' : query,
        'queryLanguage' : 'en',
        'editions' : [{
            'collection' : 'WOS',
            'edition' : 'SCI',
        },{
            'collection' : 'WOS',
            'edition' : 'SSCI',
        }]
    }

    rparams = {
        'count' : 5, # 1-100
        'firstRecord' : 1,
        'fields' : [{
            'name' : 'Relevance',
            'sort' : 'D',
        }],
    }

    return self.client['search'].service.search(qparams, rparams)

我认为query不可能只是一个普通的python字符串,正如我在WSDL页面中看到的那样,userQuery实际上是{}类型。但是this page表示{}“必须是有效的WOKQL查询语句。这个要求是在内部强制执行的”,这使得我看起来不必通过一个特殊类型。不管怎样,我试着在查询的开头追加'xs:string',但是我得到了同样的错误。在

有人知道使用这种方法的正确方法吗?在


Tags: 方法self脚本类型search错误querysoap
2条回答

所以显然,传入一个python字符串是可以的,但是我需要一个更像搜索查询的字符串。我在前面提到的the website上找到了这个示例:

<soap:Body>
  <woksearch:search xmlns:woksearch="http://woksearch.v3.wokmws.thomsonreuters.com">
  <!   this request has the minimum required elements, 
      but contains all valid retrieve options 
      for this operation and databaseId  >
  <queryParameters>
     <databaseId>WOK</databaseId> 
     <userQuery>AU=Arce, G*</userQuery>      
     <queryLanguage>en</queryLanguage> 
  </queryParameters>
....

所以我试着使用results = soap.search('AU=Hallam')并成功了。我现在可以做类似print results.recordsFound的事情,并且得到正确的答案。在

您可以尝试使用可以安装的^{}

pip install wos

然后你可以这样使用它:

^{pr2}$

您还可以使用CLI工具,如:

wos -u 'JohnDoe' -p '12345' query 'AU=Knuth Donald'

免责声明:我是客户的作者。

相关问题 更多 >

    热门问题