python - 使用HTTPBasicAuth的requests.get使用文本,而不是使用var

时间:2017-02-12 22:57:10

标签: python python-requests anaconda

我尝试通过requests.get从网站获取一些xml文件 只要我通过字符串传递用户名和密码,这种方法就可以正常工作,但是当我尝试通过使用get_password接收的变量传递它们时,这种情况并非如此。

我通过慢慢替换requests.get中的每一个部分来仔细检查每个部分,一旦我使用var作为用户名或密码部分(或者为该部分组合),一切都会出错。看来这2个都没有随我的要求一起发送。

我得到的错误是树没有要解析的内容(基本上网站拒绝了我的请求)。

说清楚:如果我不在requests.get中使用变量部分,代码就可以工作。

使用的是Windows 10和Anaconda 4.3框架(python 3.6)。 (注意:我已经删除了codesnippet中的url / username,但该网站确实使用了HTTPBasicAuth :))我得到的是一种非常狡猾的感觉,这是我遗漏的某种显而易见的事情,或者是需要挤压的bug。

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)

1 个答案:

答案 0 :(得分:0)

问题得到解决。似乎anaconda搞砸了一些对包的引用,声明它已经安装并且可用,但实际上无法正确安装。

我尝试在另一台机器上复制它,这给了我一个不同的错误,即密钥环包不可用。尝试重新安装anaconda后,尝试通过conda安装密钥环包,它给了我一个奇怪的权限错误。

然后我通过pip安装了密钥环,现在让我的脚本运行完美。我不知道是什么导致了错误或奇怪的混乱,但可能它是conda / anaconda中未满足依赖的错误。将尝试在整洁的虚拟机上再次重现它并向anaconda报告错误,如果它在愚蠢的用户旁边是一个问题;)