2012-11-03 24 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请求/响应,因为我不知道他们通过它维护会话和安全性的变量。感谢您的回复。!​​!! –