2017-08-25 5 views
0

私は、URLとは異なる日付の株価をダウンロードするいくつかのアプリケーションで作業しています。禁断の(403):私はそれがエラー を{ "リモートサーバーがエラーを返し投げ、私は別の日付のファイルを選択すると、最初のファイルをダウンロードした後で立ち往生していますWebから複数のファイルをダウンロード

Conn = New OdbcConnection("DSN=RA;MultipleActiveResultSets=True") 
    If Conn.State = ConnectionState.Closed Then 
     Conn.Open() 
    End If 
    Dim mont As Date 
    mont = DateTimePicker1.Value 
    Dim dnldurlA As String = "http://www.nseindia.com/content/historical/EQUITIES/" 
    Dim dnldurlB As String = UCase(mont.ToString("MMM")) 
    Dim dnldurlC As String = "/" 
    Dim dnldurlD As String = "cm" 
    Dim dnldurlE As String = mont.ToString("dd") 
    Dim dnldurlF As String = mont.ToString("yyyy") 
    Dim dnldurlG As String = "bhav" 
    Dim dnldurlH As String = ".csv" 
    Dim dnldurlI As String = ".zip" 
    Dim dnldurlJ As String = "\" 
    Dim FileName As String = dnldurlE & dnldurlB & dnldurlF & ".ZIP" 
    Try 
     Dim downloadClient As New WebClient() 
     downloadClient.Headers("Accept") = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" 
     downloadClient.Headers("User-Agent") = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1" 
     Dim dnldurl As String = dnldurlA & dnldurlF & dnldurlC & dnldurlB & dnldurlC & dnldurlD & dnldurlE & dnldurlB & dnldurlF & dnldurlG & dnldurlH & dnldurlI 
     downloadClient.DownloadFile(New Uri(dnldurl), ("C:\" & FileName)) 
     While (downloadClient.IsBusy = True) 

     End While 
     downloadClient.Dispose() 
    Catch ex As Exception 
     MsgBox("File can not be downloaded!!!") 
     Me.Close() 
    End Try 

次のコードを使用しています"} しかし、アプリケーションを終了して同じ日に再試行すると、ファイルがすぐにダウンロードされます。

事前に

感謝を助けてください クリス

+2

Conn = New OdbcConnection("DSN=RA;MultipleActiveResultSets=True") If Conn.State = ConnectionState.Closed Then Conn.Open() End If Dim mont As Date mont = DateTimePicker1.Value Dim dnldurlA As String = "http://www.nseindia.com/content/historical/EQUITIES/" Dim dnldurlB As String = UCase(mont.ToString("MMM")) Dim dnldurlC As String = "/" Dim dnldurlD As String = "cm" Dim dnldurlE As String = mont.ToString("dd") Dim dnldurlF As String = mont.ToString("yyyy") Dim dnldurlG As String = "bhav" Dim dnldurlH As String = ".csv" Dim dnldurlI As String = ".zip" Dim dnldurlJ As String = "\" Dim FileName As String = dnldurlE & dnldurlB & dnldurlF & ".ZIP" Try Dim downloadClient As New WebClient() Dim dnldurl As String = dnldurlA & dnldurlF & dnldurlC & dnldurlB & dnldurlC & dnldurlD & dnldurlE & dnldurlB & dnldurlF & dnldurlG & dnldurlH & dnldurlI downloadClient.DownloadFile(New Uri(dnldurl), ("C:\" & FileName)) While (downloadClient.IsBusy = True) End While downloadClient.Dispose() Catch ex As Exception MsgBox("File can not be downloaded!!!") Me.Close() End Try 

感謝を働きました人々が多くのものをすぐにダウンロードするのを防ぐためです。サイトによっては、情報をダウンロードするためのAPIをブラウズして提供するだけのサイトもあります。 –

+0

私はコードを微調整しました。とにかくそれはかなりの時間の間忘れ去られていた。おかげで – Kris

+1

あなたはループのような何かをやっていると仮定すると、スロットリングを避けるためにわずかな遅延を加えることができます。 – Plutonix

答えて

0

は、私はちょうど小さな変更を行ったし、それは完全にそれはサイトが追加された保護のいくつかの並べ替えすることができ

関連する問題