2016-10-02 7 views
1

以下のURLは、テキストファイルをダウンロードするためのダウンロードリンクです。 URLをFirefoxに貼り付けると、実際のコンテンツ、つまりテキストファイルがダウンロードされます。しかし、urlretrieveを使用すると、それは私にいくつかのHTMLソースコードファイルを与えています。urllib.request.urlretrieveはHTTPS経由でファイルをダウンロードしません

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

これは私が手に出力されます:

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

を、私はそれと同じWebページのログインフォームブラウザで開かれたHTMLソースファイルを取得し、ファイルを開いたときに、私がする必要があります問題が解決するまで別のプロセスを試してください。

私はダウンロードしてファイルを処理します。

答えて

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でファイルを読み取り、コンピュータ上のファイルに保存することにより、それを行うためのクリーンな方法があります:この方法は時間がかかりますが、通常の小さなファイルでは問題ありません。

JavaScriptのダウンロード/リダイレクト: 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ソースを取得したときにWebブラウザで開いてみるとウェブサイトのログインページを表示するので、なぜ動作しないのかわからないので、代わりに別のプロセスを思いついた 'subprocess.Popen (["C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe"、down_link])は、テキストファイルをダウンロードしてダウンロードに保存してから作業します。 – user2728397

関連する問題