requests.get을 통해 웹 사이트에서 xml 파일을 얻으려고합니다. 이것은 문자열을 통해 사용자 이름과 암호를 전달하는 한 완벽하게 작동하지만 get_password를 사용하여받은 vars를 통해 전달하려고 할 때는 작동하지 않습니다.
requests.get의 모든 비트를 천천히 교체하여 모든 부분을 두 번 확인했으며 사용자 이름 또는 암호 부분에 var를 사용하거나 해당 부분에 대해 결합하자마자 모두 잘못되었습니다. 2 개 중 어느 것도 내 요청과 함께 전송되지 않는 것 같습니다.
내가 얻는 오류는 트리에 구문 분석 할 내용이 없다는 것입니다 (기본적으로 사이트가 내 요청을 거부했습니다).
명확히하기 위해, requests.get에서 변수 부분을 사용하지 않으면 코드가 작동합니다.
사용 된 OS는 Anaconda 4.3 프레임 워크 (python 3.6)와 함께 Windows 10입니다. (참고 : 코드 스 니펫에서 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)
문제가 해결되었습니다. anaconda가 패키지에 대한 일부 참조를 엉망으로 설치하여 사용할 수 있지만 실제로 올바르게 설치할 수 없다고 표시했습니다.
다른 컴퓨터에서 재현 해 보았는데 키링 패키지를 사용할 수 없다는 약간 다른 오류가 발생했습니다. anaconda를 새로 다시 설치하고 conda를 통해 키링 패키지를 설치하려고 시도한 후 이상한 권한 오류가 발생했습니다.
그런 다음 pip를 통해 키링을 설치하여 이제 스크립트를 완벽하게 실행할 수 있습니다. 나는 오류 또는 이상한 혼란의 원인이 무엇인지 알지 못하지만 아마도 conda / anaconda의 충족되지 않은 종속성의 버그 일 수 있습니다. 깔끔한 가상 머신에서 다시 한 번 재현하고 멍청한 사용자 옆에 문제가있는 것으로 밝혀지면 아나콘다에 버그를보고합니다.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다