편집 :urlgrab가 실패한 urlgrabber는 각 파일 다음에 연결을 종료한다고 알리는 경우에도 성공합니다. urllib2가 프록시를 처리하는 방식이나 내가 사용하는 방식에 문제가있는 것처럼 보입니다!몇 번의 호출 후 urlib2.urlopen이 실패합니다.
import urlgrabber
for i in range(1, 100):
url = "http://www.iana.org/domains/example/"
urlgrabber.urlgrab(url, proxies={'http':'http://<user>:<password>@<proxy url>:<proxy port>'}, keepalive=1, close_connection=1, throttle=0)
안녕하세요 모든 : 은 어쨌든, 여기에 루프에서 파일을 검색 할 수있는 가장 간단한 코드입니다!
urllib2를 통해 많은 파일을 가져 오는 매우 간단한 파이썬 스크립트를 작성하려고합니다.
이 스크립트는 직장에서 프록시를 통해 작동해야합니다 (인트라넷에서 파일을 가져 오는 경우 프록시가없는 경우 문제가 없습니다).
"HTTPError : HTTP Error 401 : basic auth failed"라는 요청을 두 번 입력하면 스크립트가 실패합니다. 왜 그럴지 모른다고 생각 해요? 프록시가 내 인증을 거절하는 것 같지만 그 이유는 무엇입니까? urlopen 요청의 첫 번째 커플 올바르게 통과했다!
편집 : 프록시가 수행 할 수있는 일종의 제한을 피하기 위해 요청간에 10 초의 절전을 추가해도 결과가 변경되지 않았습니다.
여기 (분명히 벗겨 식별 정보) 내 스크립트의 단순화 된 버전입니다 : 사전에
import urllib2
passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
passmgr.add_password(None, '<proxy url>:<proxy port>', '<my user name>', '<my password>')
authinfo = urllib2.ProxyBasicAuthHandler(passmgr)
proxy_support = urllib2.ProxyHandler({"http" : "<proxy http address>"})
opener = urllib2.build_opener(authinfo, proxy_support)
urllib2.install_opener(opener)
for i in range(100):
with open("e:/tmp/images/tst{}.htm".format(i), "w") as outfile:
f = urllib2.urlopen("http://www.iana.org/domains/example/")
outfile.write(f.read())
감사합니다!
keepalive 모듈이 urlgrabber에서 사라진 것 같습니다 (jwat의 anwer 참조 : http://stackoverflow.com/questions/1037406/python-urllib2-with-keep-alive). 그러나 urlgrabber.urlgrab은 프록시를 지원하고 모든 파일을 성공적으로 검색했습니다. 질문에 관련 코드를 추가했습니다. –