2017-02-12 29 views
0

我嘗試通過requests.get 從網站獲取一些XML文件,只要我通過字符串通過用戶名和密碼,但不是當我嘗試通過使用get_password接收的變量來傳遞它們。python - requests.get與HTTPBasicAuth與文本,而不是var的

我已經通過緩慢地替換requests.get中的每一位來檢查每個部分,並且一旦我使用var作爲用戶名或密碼部分(或組合該部分),就會出錯。似乎沒有兩個人隨我的要求一起發送。

我得到的錯誤是該樹沒有內容解析(基本上該網站拒絕了我的請求)。

要說清楚:如果我不使用requests.get中的變量部分,代碼就會工作。

使用的是Windows 10以及Anaconda 4.3框架(python 3.6)。 (注意:我已經刪除了codesnippet中的url /用戶名,但是該網站確實使用了HTTPBasicAuth :))我得到了很狡猾的感覺,這是我缺少的某種明顯的東西,或者需要壓縮的錯誤。

import requests 
from requests.auth import HTTPBasicAuth 
import xml.etree.ElementTree as ET 
from keyring import set_password 
from keyring import get_password 

a = '<url>' 

username = '<workingusernameforsite>' 
set_password('sn', username, '<verysecretpassword') 
wachtwoord = str(get_password('sn', username)) 

page = requests.get(a, auth=HTTPBasicAuth(username, wachtwoord)) 
tree = ET.fromstring(page.content) 

for element in tree.findall(".//number"): 
    print(element.text) 

回答

0

問題已修復。看起來anaconda搞砸了對軟件包的一些引用,指出它已經安裝並可用,但實際上無法正確安裝它。

我試圖在另一臺機器上重現它,這給了我一個不同的錯誤,即密鑰環包不可用。嘗試重新安裝anaconda後,嘗試通過conda安裝keyring軟件包,它給了我一個奇怪的權限錯誤。

然後我通過pip安裝了鑰匙扣,現在可以讓我的腳本完美無瑕地運行。我不知道是什麼導致了錯誤或怪異的混亂,但可能它是conda/anaconda中未滿足的依賴項中的一個錯誤。將嘗試在整潔的虛擬機上再次重現它,並且如果事實證明是愚蠢用戶旁邊的問題,則向anaconda報告錯誤;)

相關問題