2017-02-12 7 views
0

Я пытаюсь получить некоторые XML-файлы с веб-сайта через request.get Это работает отлично, если я передаю имя пользователя и пароль с помощью строки, но не тогда, когда Я пытаюсь передать их через vars, полученные с помощью get_password.python - request.get с HTTPBasicAuth работает с текстом, а не с var

Я проверил каждую парную метку, медленно заменяя каждый бит в request.get, и все идет не так, как только я использую var для имени пользователя или пароля (или для этой части). Кажется, что ни одна из них не отправляется вместе с моей просьбой.

Ошибка, которую я получаю, заключается в том, что у дерева нет содержимого для разбора (в основном сайт отказался от моего запроса).

Чтобы сделать это ясно: код действительно работает, если я не использую часть переменных в запросах.get.

Os используется для Windows 10 и Anaconda 4.3 framework (python 3.6). (примечание: я удалил url/username в codenippet, но сайт использует 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 и попытку установить пакет keyring через conda, он дал мне странную ошибку разрешений.

Затем я установил keyring через pip, который теперь позволяет моему скрипту работать безупречно. Я понятия не имею, что вызвало ошибку или странный беспорядок, но, возможно, это ошибка в неудовлетворительных зависимостях в conda/anaconda. Попробуем воспроизвести его еще раз на аккуратной виртуальной машине и сообщить об ошибке в anaconda, если это окажется проблемой у глупых пользователей;)