阅读网站信息,显示应用程序

时间:2012-03-15 01:10:46

标签: c# winforms web-crawler webclient

如果可以从使用标准化布局组织的网站读取信息,则意味着网站的控件/文本框/按钮等始终位于同一位置,但其所持有的数据/值会发生变化。

在C#WinForm应用程序中,我可以在后台打开该页面读取一些值并使用我的表单中的那些值吗?有没有办法在网页上引用特定的区域/项目,即使它只是标签效率低12倍?我完全在这里做梦吗?

同样,我不需要点击页面上的某些内容,只需阅读某个文本框中的内容或那种性质的内容。

3 个答案:

答案 0 :(得分:6)

Html Agility Pack是做这种事情的热门选择。

答案 1 :(得分:4)

您也可以使用webbrowser控件执行此操作。要获得此主题中的所有海报及其声誉,您可以这样做:

private void Form1_Load(object sender, EventArgs e)
{
    webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
    webBrowser1.Navigate("http://stackoverflow.com/questions/9712699/read-website-information-display-application");    
}


private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{

    foreach (HtmlElement ele in webBrowser1.Document.GetElementsByTagName("SPAN"))
    {
        if (ele.GetAttribute("title") == "reputation score")
        {  
            MessageBox.Show(ele.Parent.Children[0].InnerText + " - "+ ele.InnerHtml);
        }
    }
}

答案 2 :(得分:1)

当然,你可以这样做。确切的实现可能会根据网页,布局等进行更改。

作为基本/简单概述:使用WebClient将网页检索为字符串,然后使用Regex读取匹配的HTML部分。像“点击标签x次”这样的东西不起作用,实现起来相当困难或复杂,因为您必须自己嵌入浏览器控件或解析HTML。