我正在尝试编写一个 python 脚本,从 ISI Web of Science 检索有关出版物的信息。我在 GitHub 上找到了 domoritz 的 python 脚本wos.py。它使用 Suds 连接到 ISI Web of Science 网络服务。我已将它导入到我的 python 脚本中,并按照评论中非常简短的说明尝试了此代码:
from wos import *
soap = WokmwsSoapClient()
results = soap.search('Hallam')
然后我得到一个错误:
suds.WebFault: Server raised fault: 'line 1:1: unexpected token: Hallam'
我查看了 wos.py 中的代码。这是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
它实际上是 type xs:string
。但是这个页面说userQuery
“必须是一个有效的 WOKQL 查询语句。这个要求是在内部强制执行的”,这使得我看起来不需要传入一个特殊的类型。无论如何,我尝试附加'xs:string'
到查询的开头,但我得到了同样的错误。
有人知道使用这种方法的正确方法吗?