我每天都必须从网站下载一些内容,所以我认为有一个可以做到这一点的程序会很好......问题是该网站需要身份验证。
我目前的解决方案是使用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 类,这似乎有效,但由于某种原因它不起作用。我相信它不起作用的原因是因为我必须保存 cookie?
所以我的问题是我如何能够跟踪发送到服务器的所有字节以及所有响应的字节以下载我需要的内容。换句话说,我希望让 webclient 充当 webbrowser,一旦我通过查看源代码来达到我需要的部分,我应该能够解析我需要的数据。
如果有人可以向我展示如何执行此操作的示例,我将不胜感激。谷歌浏览器在显示大量信息方面做得很好:
提前致谢,
安东尼奥