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

伊莉討論區

搜索
尊貴會員無限使用任何功能尊貴會員無限觀看附件圖片你準備好成為出色的版主了嗎?
無碼office七龍珠三上催眠中文鬼滅之刃
the forethe agen風水省得他鬧えりんぎ烈焰先鋒royd

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

[繁]香格里拉・開拓異

老媽沒收兒子的手機

[繁/無修正]夢想成為

[繁]我獨自升級08-

中國爛尾樓現狀的小短

[繁]反派千金等級99~
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 8573|回復: 1

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

  專 家(12000/24000)

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

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

帖子
1412
積分
17880 點
潛水值
38197 米
發表於 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
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
本人 都是寫 vb.net 如果看到本人的原創 請自備 .Net FrameWork 3.5
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

帖子
46
積分
28 點
潛水值
15047 米
發表於 2020-4-5 11:36 PM|顯示全部樓層
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
謝謝大大的分享..大大辛苦了
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

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

Powered by Discuz!

© Comsenz Inc.

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