Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过SOAP访问ISI科学网_Python_Web Services_Soap_Suds - Fatal编程技术网

Python 通过SOAP访问ISI科学网

Python 通过SOAP访问ISI科学网,python,web-services,soap,suds,Python,Web Services,Soap,Suds,我正试图编写一个python脚本,从ISI科学网检索有关出版物的信息。我在GitHub上找到了domoritz的python脚本。它使用肥皂水连接到ISI科学网络服务。我已经将其导入到python脚本中,并按照注释中非常简短的说明尝试了这段代码: from wos import * soap = WokmwsSoapClient() results = soap.search('Hallam') 然后我得到一个错误: suds.WebFault: Server raised fault: 'l

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

from wos import *
soap = WokmwsSoapClient()
results = soap.search('Hallam')
然后我得到一个错误:

suds.WebFault: Server raised fault: 'line 1:1: unexpected token: Hallam'
我在wos.py中查看了代码。以下是
搜索
功能:

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字符串,正如我在页面中看到的那样,
userQuery
实际上是
xs:string
类型。但是说
userQuery
“必须是一个有效的WOKQL查询语句。这个要求是在内部强制执行的”,这使得我似乎不必传入特殊类型。无论如何,我尝试在查询的开头追加
'xs:string'
,但得到了相同的错误


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

因此,显然传入python字符串很好,但我需要一个更像搜索查询的字符串。我在前面提到的示例中发现:

<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>
....

炒锅
AU=弧,G*
EN
....
所以我试着使用
results=soap.search('AU=Hallam')
,效果很好。我现在可以执行诸如打印结果之类的操作。记录查找,我会得到正确的答案。

您可以尝试使用可与以下一起安装的:

pip install wos
然后你可以这样使用它:

from wos import WosClient
import wos.utils

with WosClient('JohnDoe', '12345') as client:
    print(wos.utils.query(client, 'AU=Knuth Donald'))
您还将使用CLI工具,如:

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


*免责声明:我不为科学网工作,但我是客户的作者。您需要具有web服务访问权限(这是正常WOS访问之外的付费服务),因为web of Science不允许来自普通用户的web服务请求。你应该要求你的大学提供WOS给你的用户名和密码。这不仅适用于我的客户机,也适用于使用WOS web服务的任何东西*

我还试图学习如何访问知识数据网络。你知道发生了什么事吗@丹尼尔:对不起,我帮不了你!我对这个很陌生,谢谢!使用这个系统访问知识网,你必须申请任何额外的许可吗?@Daniel我也在一所大学的计算机上,可以访问知识网,我不需要申请任何特殊许可,它似乎可以工作。谢谢你!我真的很感激!今天我遇到了以下错误:suds.WebFault:Server-raised-fault:“Web服务(版本2.0)已永久退役。请联系汤森路透知识产权和科学技术支持部门,了解如何获取新版本的Web服务。Web服务版本2.0已被版本3.0取代。下面是描述:如果我运行命令
wos-u'xxx@xxx.org'-p“mypassword”connect
,我得到
错误:没有为用户名返回匹配项xxx@xxx.org
。用户名不是电子邮件地址吗?@patti_jane:你需要有web服务访问权限(这是一种付费服务),因为科学网不允许来自普通用户的web服务请求。您应该要求您的大学向您提供WOS提供的用户名和密码。@enrico.bacis我已经有WOS提供的用户名和密码,当我登录系统时,它们工作正常,但当我尝试通过WOS访问时,我收到与上述jordix相同的错误。py@patti_jane“登录”是什么意思?您需要WWS Premium访问权限,默认情况下不提供该权限。我建议与wos支持人员核实您的访问级别。因为我刚刚检查并确认我可以用我的证书登录。我获得了一个vpn访问(通过我的机构提供的用户名和密码)到科学网,所以我可以直接去webofknowledge.com搜索我想要的任何东西,但当我尝试通过python搜索时,我遇到了错误。我应该注意到,通过相同的用户名和密码,我可以在scopus中搜索,也可以通过python在scopus中搜索。