제약 : 나는, 파이썬 3를 사용하는 옵션이없는 때문에 requests
질문 내가 파일 다운로드 작업을 자동화해야urllib2 답변 만 : 게시물 요청이 302 응답을 생성하지 않는 이유는 무엇입니까?
를 벗어났습니다. 나는이 URL을 www.example.com/files/MyFile_2014-02-14.csv
에서 파일에 대한 요청을 볼 수 Firefox에서
는 개발자 콘솔에서 다음과 같이 간다 : 나는
import urllib
import urllib2
import cookielib
class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
''' use it to prove if I get a 302 or not'''
def http_error_301(self, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301(self, req, fp, code, msg, headers)
result.status = code
return result
def http_error_302(self, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)
result.status = code
return result
def main():
proxy_handler = urllib2.ProxyHandler({'http': 'http://myproxy.local'})
username='XXX'
password='YYY'
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, 'http://www.example.com', username, password)
pass_handler = urllib2.HTTPBasicAuthHandler(passman)
cookieJar = cookielib.CookieJar()
cookieprocessor = urllib2.HTTPCookieProcessor(cookieJar)
srh = SmartRedirectHandler()
opener =urllib2.build_opener(proxy_handler, pass_handler, cookieprocessor, srh)
urllib2.install_opener(opener)
data = urllib.urlencode({'username':username, 'password':password}) # To force post
fileurl = 'http://www.example.com/files/MyFile_2014-02-14.csv'
req = urllib2.Request(fileurl, data, headers={'Proxy-Connection':'keep-alive'})
c = urllib2.urlopen(req)
c.code
는 항상 과정을 자동화하기 위해 다음 코드를 사용
14:38:33.782 POST www.example.com [HTTP/1.1 302 Found 406ms]
14:38:34.288 GET www.example.com/files/MyFile_2014-02-14.csv/ [HTTP/1.1 200 OK 687ms]
을 200 및 c.read()
은 내 환영 페이지에서만 내용을 제공합니다 (로그인 성공 후 사용 가능)
왜 예상대로 302를 얻지 못합니까?
실제로 'SmartRedirectHandler'의 메소드는 전혀 호출되지 않습니다. 결과에 '상태'입력란이 없습니다. –