找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
尊貴會員無限觀看附件圖片儲值後自動升級用戶組認識好友、聊天,分享生活趣事
火影催眠ntrgdsirokkbox
my...死人谷三國打工強姦自慰黑粗催眠亂倫

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]莫名成為邪龍的五

[繁]再見龍生,你好人

[繁]魔法光源股份有限

[繁]香格里拉・開拓異

[簡]神之塔 第二季16-

[繁]Acro Trip 頂尖惡
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 9192|回復: 1
打印上一主題下一主題

[分享]用HttpWebRequest 下載檔案[複製鏈接]

  專 家(12000/24000)

偶素程式設計下的產物「浻」

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1412
積分
17880 點
潛水值
39757 米
跳轉到指定樓層
樓主
發表於 2014-2-1 08:48 PM|只看該作者|倒序瀏覽
本帖最後由 darkjack 於 2014-2-1 08:48 PM 編輯

這是我在網路上搜尋到的 一段程式碼..我修改了一些
請自行增加 Textbox 與 Button 各一個
  1.     Sub Loading(ByRef MyWeb As WebBrowser)
  2.         Do Until WebBrowserRead.ReadyState = WebBrowserReadyState.Complete
  3.             Application.DoEvents()

  4.         Loop
  5.     End Sub


  6.   Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
  7.         Dim url As Uri = New Uri("https://www.google.com.tw/search?safe=off&hl=zh-TW&site=imghp&tbm=isch&source=hp&q=" & TextBox1.Text)

  8.         Dim objWebClient As New WebClient
  9.         Dim temp As Integer
  10.         Dim DataLinkStr(1), DataLinkStr2(1) As String


  11.         Dim GetStrAllLen, Str1, Str2 As Integer


  12.         '載入網頁
  13.         WebBrowserRead.Navigate(url)

  14.         Loading(WebBrowserRead)

  15.         For Each [HtmlElement] As HtmlElement In WebBrowserRead.Document.All
  16.             If [HtmlElement].TagName = "A" And [HtmlElement].GetAttribute("href") <> Nothing Then

  17.                 DataLinkStr = Split([HtmlElement].OuterHtml, "imgurl=")
  18.                 If DataLinkStr.Length > 1 Then

  19.                     DataLinkStr2 = Split(DataLinkStr(1), "&") '分割

  20.                     RichTextBox1.Text &= DataLinkStr2(0) & vbCrLf

  21.                     Str1 = InStrRev(DataLinkStr2(0), "/")  '取得 某字串位置
  22.                     Str1 = Str1 + 1 '往後推一字元

  23.                     GetStrAllLen = DataLinkStr2(0).Length '取得總字數(包涵http://)

  24.                     Str2 = GetStrAllLen - Str1

  25.                     If Strings.Right(DataLinkStr2(0), 4) = ".jpg" Or Strings.Right(DataLinkStr2(0), 4) = ".png" Then

  26.                         ListBox1.Items.Add(Strings.Mid(DataLinkStr2(0), Str1, Str2 + 1)) '取出要存的檔名
  27.                         Try
  28.                             HttpWebDownload(DataLinkStr2(0))
  29.                             Download_Count += 1
  30.                         Catch ex As WebException

  31.                         End Try

  32.                     Else
  33.                         Dim str3split() As String
  34.                         Dim str3 As String
  35.                         str3split = Split(DataLinkStr2(0), ".jpg")
  36.                         str3 = str3split(0) & ".jpg"

  37.                         temp += 1
  38.                     End If
  39.                     'objWebClient.DownloadFileAsync(New Uri(DataLinkStr2(0)), "G:\test\1\" & Strings.Mid(DataLinkStr2(0), Str1, Str2 + 1))
  40.                 End If
  41.             End If
  42.         Next

  43.     End Sub


  44.     Private Download_Count As Integer
  45.     Private Download_C_temp As Integer

  46.     Private Function HttpWebDownload(ByVal InputUrl As String)
  47.         Dim bytes_ As Integer = 0
  48.         Dim MyResponse As HttpWebResponse
  49.         Dim MyRequest As HttpWebRequest
  50.         Dim RemoteStream As Stream
  51.         Dim MyFilewStream As Stream

  52.         Dim TimeStart As DateTime = Now
  53.         Dim TS As TimeSpan

  54.         MyRequest = HttpWebRequest.Create(InputUrl)
  55.         If MyRequest IsNot Nothing Then
  56.             'MyResponse.GetResponseStream()
  57.             MyRequest.Timeout = (5 * 1000)
  58.             MyResponse = MyRequest.GetResponse
  59.             If MyResponse IsNot Nothing Then
  60.                 '判斷網頁狀態
  61.                 If MyResponse.StatusCode = HttpStatusCode.OK Then


  62.                     RemoteStream = MyResponse.GetResponseStream

  63.                     MyFilewStream = File.Create("G:\temp\1\" & Download_Count & ".jpg") '檔名

  64.                     Dim buffer(1024) As Byte
  65.                     Dim bytesRead As Integer

  66.                     TimeStart = Now

  67.                     Do
  68.                         bytesRead = RemoteStream.Read(buffer, 0, buffer.Length)

  69.                         MyFilewStream.Write(buffer, 0, bytesRead)

  70.                         bytes_ += bytesRead

  71.                         Application.DoEvents()
  72.                         '判斷執行時間
  73.                         TS = Now.Subtract(TimeStart)
  74.                         Console.WriteLine(TS)
  75.                         If TS.TotalSeconds > 7 Then
  76.                             Exit Do
  77.                         End If
  78.                     Loop While bytesRead > 0
  79.                 End If
  80.             End If
  81.         End If

  82.         If MyResponse IsNot Nothing Then MyResponse.Close()
  83.         If RemoteStream IsNot Nothing Then RemoteStream.Close()
  84.         If MyFilewStream IsNot Nothing Then MyFilewStream.Close()

  85.         Return bytes_

  86.     End Function
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏1支持支持0
本人 都是寫 vb.net 如果看到本人的原創 請自備 .Net FrameWork 3.5

使用道具檢舉

帖子
46
積分
28 點
潛水值
15047 米
頭香
發表於 2020-4-5 11:36 PM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
謝謝大大的分享..大大辛苦了
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部