【问题标题】:read website information, display application读取网站信息,展示应用
【发布时间】:2012-03-15 01:10:45
【问题描述】:

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

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

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

【问题讨论】:

  • "screen-scraping" 是您正在寻找的术语..是的,它很容易而且很常见。
  • 这里有很多不错的答案,没有什么好接受的?

标签: c# winforms web-crawler webclient


【解决方案1】:

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

【讨论】:

  • 从来不知道存在那太可怕了!
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    当然,您可以这样做。确切的实现可能会根据网页、布局等而改变。

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

    【讨论】:

    • +1。请注意,当有明显的块来定位它们时,RegEx 对于从页面中选取值很有用,例如 "id='aaa'>text to scrap
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 2018-06-18
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多