使用代码从互联网下载内容

时间:2012-08-22 20:18:31

标签: c# automation webserver webclient-download

我必须每天从网站上下载一些内容,所以我觉得有一个程序可以做到这一点很好......问题是该网站需要身份验证。

我目前的解决方案是使用System.Windows.Forms.WebBrowser控件。我目前做的事情如下:

/* Create browser */
System.Windows.Forms.WebBrowser browser = new System.Windows.Forms.WebBrowser();

/* navigate to desired site */ 
browser.Navigate("http://stackoverflow.com/");

// wait for browser to download dom

/* Get all tags of type input */
var elements = browser.Document.Body.GetElementsByTagName("input");

/* let's look for the one we are interested */
foreach (System.Windows.Forms.HtmlElement curInput in elements)
{
       if (curInput.GetAttribute("name") == "q") // 
       {
             curInput.SetAttribute("value", "I changed the value of this input");
             break;
       }
}

// etc

我认为这种方法有效,但不是最佳解决方案。我试图使用webclient类,这似乎工作,但由于某种原因它不起作用。我相信它不起作用的原因是因为我必须保存饼干?

所以我的问题是我如何能够跟踪发送到服务器的所有字节以及响应以便​​下载我需要的所有字节。换句话说,我希望webclient充当webrowser,一旦我通过查看源代码到达我需要的部分,我应该能够解析我需要的数据。

如果有人能告诉我一个如何操作的例子,我将不胜感激。 Google Chrome在显示大量信息方面表现非常出色: enter image description here

提前致谢,

安东尼奥

1 个答案:

答案 0 :(得分:1)

回答你的问题:

  1. 我知道跟踪流量的最佳效用是Fiddler(免费)。
  2. 要发送高级HTTP请求,您应该使用类System.Net.HttpWebRequest,它还具有属性CookieContainerHeaders,允许您按照自己的意愿执行操作。
  3. 希望它有所帮助。