2014-01-09 10 views
1

urllib로 파일을 다운로드하려고합니다. 나는 (I이 링크에 크롬을 사용하는 경우, 즉시 RAR 파일을 다운로드를 시작합니다)이 RAR에 대한 직접 링크를 사용하고,하지만 난 다음 코드를 실행하면urllib2로 zip 파일을 다운로드 할 수 없습니다.

file_name = url.split('/')[-1] 
u = urllib.urlretrieve(url, file_name) 

을 ... 모두가 내가 돌아 오기 분명히 틀린 22kb rar 파일입니다. 여기서 무슨 일이 일어나고있는거야? Im은 OSX 매버릭스 w/파이썬 2.7.5, 그리고 here은 URL입니다.

(면책 조항 :에서 볼 때 이것은 무료로 다운로드 밴드의 website

+0

zip 파일을 보거나 파일에'file'을 (를) 호출 해 보셨습니까? – raser

+1

문제를 해결하기 위해이 URL을 사용하면 도움이됩니다. –

+0

은 url에서 파일 이름을 얻기 위해'urlparse','posixpath' 모듈이 도움이 될 수 있습니다. [''url2filename()'함수] (http://stackoverflow.com/a/20478401/4279)를보십시오. – jfs

답변

1

알 수 있습니다. 헤더에는 많은 정보가 부족했습니다. ,

'Connection': 'keep-alive' 
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML,  like Gecko) Chrome/31.0.1650.63 Safari/537.36' 
'Cookie': 'JSESSIONID=36DAD704C8E6A4EF4B13BCAA56217961; ziplocale=en; zippop=2;' 

그러나, 나는이의 모든이 필요한 것으로 나타났습니다 (다만 쿠키는 당신이 필요로하는 모든입니다) : 나는 Requests을 사용하는 의지, 각 GET 요청과 함께, 나는 헤더에 다음과 같은 내용을 추가 하지만 그 트릭을 했어 - 나는 전체 파일을 다운로드 할 수있었습니다. urllib2를 사용한다면, 같은 헤더 콘텐트로 요청을 보내는 것이 속임수 일 것이라고 확신합니다. 좋은 조언과 올바른 방향으로 나를 가리켜 주셔서 감사합니다. Fiddlr을 사용하여 Chrome의 GET 헤더와 비교하여 내 Requests GET 헤더가 누락되었음을 확인했습니다. 내 것과 비슷한 문제가 있다면 확인해 보시기 바랍니다.

0

내가 대신 다음 코드를 사용하여 파이썬이 시도 urliburllib2과 :

url = "http://www29.zippyshare.com/d/12069311/2695/Del%20Paxton-Worst.%20Summer.%20Ever%20EP%20%282013%29.rar" 

import urllib2 

file_name = url.split('/')[-1] 
response = urllib2.urlopen(url) 
data = response.read() 
with open(file_name, 'wb') as bin_writer: 
    bin_writer.write(data) 

와 나는 같은 얻을 22k 파일을 만들었습니다. 해당 URL의 wget으로 시도하면 같은 파일이 생성되지만 Chrome 탐색 표시 줄에 URL을 붙여 넣어 전체 파일 (약 35MB)을 다운로드 할 수있었습니다. 아마도 다른 파일을 제공하고있을 것입니다 요청할 때 보내는 헤더에 따라? U ser-Agent GET 요청 헤더가 서버와 다르게 보일 것입니다 (즉, 브라우저를 사용하지 않고) 파이썬/wget에서 가져온 것입니다.

.rar 아카이브를 열어 두 파일을 검사하지 않았습니다.

This thread discusses setting headers with urllib2this is the Python documentation on how to read the response status codes from your urllib2 request도 도움이 될 수 있습니다.

+0

Chris에게 감사드립니다.이 [link] (http://www29.zippyshare.com/v/12069311/file.html)로 리디렉션되고 있음을 알았습니다. 내 Chrome User-Agent 정보를 복사하여 내 요청 헤더에 붙여 넣었지만 계속 리디렉션되었습니다. 나는 계속 노력할 것이다. 지금까지 고맙습니다. – b0ris

+0

아무런 문제가 없다. 죄송합니다 ... –

관련 문제