2016-07-21 6 views
1

ウェブページからファイルをダウンロードしたい。そのWebページには1つの.zipファイルしかありません(ダウンロードしたいものですが).zipファイルをクリックするとダウンロードが開始されますが、URLは変更されません(URLはまだhttp://ldn2800:8080/id=2800のままです)。 http://example.com/1.zipという形式のURLがないと考えると、どうすればこのファイルをPythonでダウンロードできますか?URLが変更されないときにPythonを使用してファイルをダウンロードする方法

また、直接http://ldn2800:8080/id=2800に行くと、そのページは.zipファイルで開きますが、クリックしないとダウンロードされません。どうすればPythonを使ってダウンロードできますか?

UPDATE:今、私はそれをこのようにやっている:

if (str(dict.get('id')) == winID): 
      #or str(dict.get('id')) == linuxID): 
      #if str(dict.get('number')) == buildNo: 
      buildTypeId = dict.get('id') 
      ID = dict.get('id') 
      downloadURL = "http://example:8080/viewType.html?buildId=26009&tab=artifacts&buildTypeId=" + ID 
      directory = BindingsDest + "\\" + buildNo 
      if not os.path.exists(directory): 
       os.makedirs(directory) 

      fileName = None 
      if buildTypeId == linuxID: 
       fileName = linuxLib + "-" + buildNo + ".zip" 
      elif buildTypeId == winID: 
       fileName = winLib + "-" + buildNo + ".zip" 

      if fileName is not None: 
       print(dict) 
       downloadFile(downloadURL, directory, fileName) 

def downloadFile(downloadURL, directory, fileName, user=user, password=password): 
    if user is not None and password is not None: 
     request = requests.get(downloadURL, stream=True, auth=(user, password)) 
    else: 
     request = requests.get(downloadURL, stream=True) 

    with open(directory + "\\" + fileName, 'wb') as handle: 
     for block in request.iter_content(1024): 
      if not block: 
       break 
      handle.write(block) 

しかし、それだけで、必要な場所にzipファイルを作成しますが、そのジッパーが開かれ、何もしていないことはできません。 このようなことができますか?ウェブページ上のファイル名を検索して、そのパターンをダウンロードしたのですか?

+0

これはあなたを助けるはずです:http://stackoverflow.com/questions/11002014/downloading-file-with-python-mechanize – bernie

+0

pythonを使ってリクエストを実行しようとしましたか?何が起こるのですか? –

+0

@MarcoAcierno私は今何をしているのかを示す質問を更新しました。 – Arshad

答えて

1

HTTPステータスコードをチェックして、エラーが発生していないことを確認します。あなたはそうする組み込みメソッドraise_for_statusを使用することがあります:https://requests.readthedocs.io/en/master/api/#requests.Response.raise_for_status

def downloadFile(downloadURL, directory, fileName, user=user, password=password): 
    if user is not None and password is not None: 
     request = requests.get(downloadURL, stream=True, auth=(user, password)) 
    else: 
     request = requests.get(downloadURL, stream=True) 

    request.raise_for_status() 

    with open(directory + "\\" + fileName, 'wb') as handle: 
     for block in request.iter_content(1024): 
      if not block: 
       break 
      handle.write(block) 

はよろしいです、このようなプロキシは/ FW /などとして何のネットワークの問題がないこと?

編集:あなたの上記のコメントによれば、私はあなたの実際の問題に答えるかどうかはわかりません。改訂版の回答:

zipファイルへのリンクを含むWebページにアクセスします。このリンクは、ページ自体と同じです。しかし、ブラウザでクリックすると、HTMLページに再びアクセスするのではなく、ファイルがダウンロードされます。それは変わったですが、さまざまな方法で説明できます。 HTMLページのコード全体(zipファイルへのリンクを含む)をコピーして貼り付けてください。これはおそらく問題の理解に役立ちます。

+0

エラーは発生していません。それは企業ネットワークです。それは事実でしょうか? – Arshad

+0

企業ネットワークには、おそらくインターネットに接続するための必須のプロキシがあります。あなたのターゲットサイトは、社内ネットワークまたは外部にホストされていますか? – Guillaume

+0

企業ネットワーク内でホストされています。 – Arshad

関連する問題