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

C# 阅读网站信息,显示应用程序,c#,winforms,web-crawler,webclient,C#,Winforms,Web Crawler,Webclient,如果可以从使用标准化布局组织的网站中读取信息,这意味着该网站的控件/文本框/按钮等始终位于同一位置,但其所包含的数据/值会发生变化 在C#WinForm应用程序中,我是否可以在后台打开该页面,读取一些值并在表单中使用这些值?有没有一种方法可以引用网页上的特定区域/项目,即使这种方法的效率与分页12次一样低?我完全是在做梦吗 同样,我不需要点击页面上的某些内容,只需阅读某个文本框中的内容或类似内容。当然,你可以这样做。具体的实现可能会根据网页、布局等进行更改 作为基本/简单的大纲:使用WebCli

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

在C#WinForm应用程序中,我是否可以在后台打开该页面,读取一些值并在表单中使用这些值?有没有一种方法可以引用网页上的特定区域/项目,即使这种方法的效率与分页12次一样低?我完全是在做梦吗


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

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


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

是执行此类操作的常用选择。

您也可以使用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);
        }
    }
}

请注意,这个“屏幕抓取”是你要找的术语。是的,它很容易而且很常见。这里有很多很好的答案,没有什么可以接受的?从来都不知道它的存在,这真是太可怕了+1.请注意,当有明显的块来定位它们时,正则表达式对于从页面中拾取值非常有用,例如“id='aaa'>要废弃的文本”