2016-10-02 1 views
1

아래 URL은 텍스트 파일을 다운로드 할 수있는 다운로드 링크입니다. URL을 Firefox에 붙여 넣으면 텍스트 파일 인 실제 내용을 다운로드합니다. 하지만, urlretrieve을 사용하면 HTML 소스 코드 파일을 제공하고 있습니다.urllib.request.urlretrieve는 HTTPS를 통해 파일을 다운로드하지 않습니다.

그래서 난에있는 파일을 열 때

>>> 
('C:\\Users\\rakesh.j.kulkarni\\AppData\\Local\\Temp\\tmps7559wgi' 
http.client.HTTPMessage object at 0x03A3C610>) 

내가이 동일한 웹 페이지의 로그인 양식을 브라우저로 열 HTML 소스 파일을 얻을 :

>>> import urllib 
>>> down_link='URL' #URL is a ***HTTPS*** link to download .txt file 
>>> file=urllib.request.urlretrieve(down_link) 

이 출력 내가 얻을입니다 문제가 해결 될 때까지 동일한 작업을 수행하는 대체 프로세스를 제안하십시오.

그런 다음 파일을 다운로드하고 작업합니다.

답변

3

우선, urllib (Py3)뿐만 아니라 urllib.request을 가져와야합니다.
그리고 개체를 변수에 할당하여 개체 인스턴스를 출력으로 제공합니다. 그 문제 아무것도, 당신에게 빠른 수정을주고, 일을 시도하지 :

In [1]: import urllib.request 

In [2]: down_link = "http://vignette3.wikia.nocookie.net/shipoffools/images/4/42/Surprised_Luffy.jpg/revision/latest?cb=20120921134043" 

In [3]: path_to_save = "../luffy.jpg" 

In [4]: urllib.request.urlretrieve(down_link, path_to_save) 
Out[4]: ('../luffy.jpg', <http.client.HTTPMessage at 0x47f6af0>) 

이 잘 작동합니다, 당신이 원하는 이미지를 저장. path_to_save를 지정하지 않으면 어쨌든 다운로드되고 경로는 tmp 디렉토리가 될 것이므로 귀하의 경우에는 C:\\Users\\rakesh.j.kulkarni\\AppData\\Local\\Temp\\ 폴더가됩니다.

In [5]: import urllib.request as req 

In [6]: down_link = "https://vignette3.wikia.nocookie.net/shipoffools/images/4/42/ 
    ...: Surprised_Luffy.jpg/revision/latest?cb=20120921134043" 

In [7]: fname = "../luffy.jpg" 

In [8]: with req.urlopen(down_link) as d, open(fname, "wb") as opfile: 
    ...:  data = d.read() 
    ...:  opfile.write(data) 
    ...: 

참고 : https 관련 오류 또는 기타 문제의 경우

urlopen 사용하여 파일을 읽고 컴퓨터의 파일에 저장하여, 그 일을하는 청소기 방법이 :이 방법은 시간이 좀 걸릴 수 있지만 보통의 작은 파일에는 정상적으로 작동합니다.

자바 스크립트 다운로드/리디렉션 : 자바 스크립트 또는 PHP 스크립트 다운로드의 경우 브라우저에서 링크를 열 때 subprocess을 사용하면 실제로 브라우저의 경로를 지정해야하므로 동적 코드가 아닙니다. 이미 존재하는 모듈 webbrowser, 그것은 자동으로 시스템의 기본 브라우저를 감지하고 URL을 엽니 다.

import webbrowser 
url = ... 
webbrowser.open(url, autoraise=True) # normal 
webbrowser.open_new(url)    # new window 
webbrowser.open_new_tab(url)   # new tab 
+0

나는 그것이 'HTTPS'요청 있다는 얘기를 깜빡 했네요, 나는 당신의 방법으로 시도하지만 여전히 내가 대신 실제 텍스트 파일 – user2728397

+0

, 그것은에서 HTML 소스와 같은 파일을 얻고 그냥 그것에 대해 어떻게 편집을했다 그게 효과가 있니? –

+0

나는 그것이 작동하지 않는 이유를 이해하지 못한다. html 소스를 얻었을 때 웹 브라우저에서 열려고 시도했는데 웹 사이트 로그인 페이지를 제공했기 때문에 다른 프로세스 대신에'subprocess.Popen ("C : \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe", down_link]) 이제 텍스트 파일을 다운로드하여 다운로드에 저장 한 다음 파일에서 작업합니다. – user2728397