2013-03-13 47 views
3

我試圖編寫一個python腳本,它從ISI Web of Science中檢索有關出版物的信息。我在GitHub上找到了domoritz的python腳本wos.py。它使用Suds連接到ISI Web of Science Web服務。我已經導入到我的Python腳本,我嘗試這種代碼,下面的評論非常簡要說明:通過SOAP訪問ISI Web of Science

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實際上xs:string類型是。但是this pageuserQuery「必須是一個有效的WOKQL查詢語句。這個要求是在內部強制執行的」,這看起來好像我不必傳入特殊類型。無論如何,我試圖追加'xs:string'到查詢的開始,但我得到了同樣的錯誤。

有沒有人知道使用這種方法的正確方法?

+0

我也在學習如何訪問知識數據網頁。你知道發生了什麼嗎? http://stackoverflow.com/questions/15647236/soap-service-for-accessing-web-of-knowledge-using-php – DanielTheRocketMan 2013-03-26 21:07:27

+0

@Daniel對不起,不能幫助你!我對此很新。 – FrancesKR 2013-03-27 16:01:05

+0

謝謝!您是否需要獲得任何額外的許可才能使用此係統訪問知識網絡? – DanielTheRocketMan 2013-03-27 17:19:55

回答

1

所以顯然傳入一個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這樣的事情,我可以得到正確答案。

+1

今天我得到這個錯誤: suds.WebFault:服務器引發的錯誤:'Web服務(版本2.0)已經永久退役。請聯繫湯森路透IP和科學技術支持http://ip-science.thomsonreuters.com/techsupport/瞭解如何獲取我們Web服務的新版本。 – 2014-11-05 00:01:57

+0

Web服務版本2.0已被版本3.0替換。下面是說明:http://ipscience-help.thomsonreuters.com/wosWebServicesLite/WebServicesLiteOverviewGroup/Introduction/wsdlFileLocations.html – bdulac 2016-02-02 09:04:17

2

你可以嘗試使用Wos Python Client可與被安裝:

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' 

免責聲明:我是客戶的作者。

+0

如果我運行'WOS -u '[email protected]' -p '輸入mypassword' connect' ,我得到'錯誤:沒有匹配返回用戶名xxx @ xxx.org'。用戶名稱不是電子郵件地址嗎? – jordix 2016-10-10 20:53:10

+0

@jordix我有同樣的問題,你找到了解決方案嗎? – 2017-01-20 08:46:24

+0

@patti_jane:由於Web of Science不允許來自普通用戶的Web服務請求,因此您需要訪問Web服務(這是一項付費服務​​)。你應該要求你的大學爲你提供WOS給他們的用戶名和密碼。 – 2017-01-20 08:50:26