2012-11-03 23 views
-1

的Web瀏覽器組件維護URL如何使用VB.NET的Web瀏覽器控件,我們可以通過右擊圖像上實現,做下載嵌入圖像'保存圖片爲'?動態和會話下載圖像通過VB.NET 2008


我正在開發一個VB.NET項目,它可以抓取特定網站並下載其內容,包括嵌入到其中的任何圖像。現在我的問題是,由於網站上維護的安全性,我無法使用Web客戶端和HTTP請求/響應類來服務我的目的。

該網站保持與一些JavaScriptjQuery。此外,它還通過一些cookie和隱藏字段來維護會話,並在每個請求中跟蹤它們。如果發現任何不連續性,則重定向到登錄頁面。

我用這對我來說在保持安全性做的很好的web瀏覽器組件找到了解決這個問題。

但是我的下一個問題是存儲HTML源文件以外的內容,比如嵌入式圖像,這是我現在主要關心的問題,我相信許多軟件開發人員必須面對相同的問題。

我發現各種後在C#中,我修改,但它並沒有爲我C# code for saving an entire web page? (with images/formatting)工作,等等。

此外,我有一個項目解決了Save image from web-browser control in Visual Basic 2005中的同一問題,但爲此我公司的政策不允許我這樣做。

如何自動執行右鍵單擊和「保存圖片爲」的過程?

有什麼真正的解決辦法嗎?如果沒有,那麼是否有任何替代解決方案,如從臨時文件夾複製。如果是,請提供解決方案!

+0

謝謝[彼得·莫特森(http://stackoverflow.com/users/63550/peter-mortensen)爵士優美,準確地編輯我的帖子的地步。 :) –

回答

0

我沒有得到第一種方法的答案,那就是,與Web瀏覽器組件下載,但我得到了選擇,因爲複製從「Internet臨時文件」文件夾。

這是我的代碼片段,爲我做的工作。

Private Function get_Image(ByVal src As String) 
    '******* code for storing Images from temporary internet files folder....... 
    Dim filename As String = get_File() 
    Dim gifFiles As String() = Directory.GetFiles("C:\Documents and Settings\123\Local Settings\Temporary Internet Files\", "*.*", SearchOption.AllDirectories) 
    Dim imgno As Integer = 0 
    For Each file As String In gifFiles 
     'Dim fsi As String = Directory.GetLastWriteTime(file).ToString 
     If My.Computer.FileSystem.FileExists(file) And file.Contains("attachDisplay") And Not filename.Contains("File") Then ' This is HardCoded part for my images that are having dynamic url as my base_URL/attachDisplay?_XYZ (so in temp it is storing as attachDisplay[i]; i=1,2...) 
      Dim curFileDT As Date = Directory.GetLastWriteTime(file) 
      If Date.Compare(lastFileDT, curFileDT) = -1 Then ' if Last file date is before than current File write time 
       imgno += 1 

       My.Computer.FileSystem.CopyFile(file, filename & " Img No." & imgno & file.Substring(file.LastIndexOf(".")), True) 
      End If 
     End If 
    Next 
    lastFileDT = Date.Now 'My lastFileDT variable is declared at class level and first initialization at form load. 
    '******* 
End Function 

這不是下載圖像的正確方法,但它目前正在爲我完成這項工作。

0

爲什麼你需要真正下載圖像來完成你的任務?此外,請記住,您可以使用網絡請求實際跟蹤/發送Cookie(無需實際的瀏覽器控制)。並且您可以使用HtmlAgilityPack解析這些隱藏字段的HTML。

所以我建議重新審視自動化這條路,而不是試圖使用瀏覽器控制。

+0

謝謝你的建議喬爾,但正如我所說,我已經嘗試了所有這些選項,後來來到網絡瀏覽器。我的目的是在本地完全下載網站,所以我需要下載圖像並進行靜態鏈接。正如我所說我不能使用Web客戶端和HTTP請求/響應,因爲我不知道他們通過它維護會話和安全性的變量。感謝您的回覆。!​​!! –