如何使用C#从html页面中删除文本?

时间:2011-09-09 17:29:23

标签: c# html web-scraping

我有一个网页,当导航到只返回一个简单的文本值,如数字100.我需要从页面中获取该值,所以我可以在我的应用程序中使用它。该应用程序是一个简单的Windows窗体应用程序,上面有一个Web浏览器控件。

我尝试了很多东西,但它并没有抓住文本,就好像它不存在一样。然而,如果我右键单击并查看源代码,它就在那里。

这不是那么难......这只是一些文字。

只是澄清文件中包含NO html,只是一个数字。使用WebClient或WebRequest时,它不会返回值。

    private void RegisterWindow_Load(object sender, EventArgs e)
    {
        webBrowser1.Navigate("MYURL");
        webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

    }

    void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        // Check and see if we have navigated to the final page.
        string registeredUrl = "MYURL";
        string currentPage = webBrowser1.Url.ToString();
        string response = string.Empty;

        if (webBrowser1.Url.ToString() == registeredUrl)
        {
            // Now parse the authkey from the url
            response = GetWebRequest(currentPage);
            MessageBox.Show(response);
        }
    }

    /// <summary>
    /// Send a Web Request and get a Web Response back. 
    /// This respons can be a valid URL, simple text response, or 
    /// HTML response.        
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    public string GetWebRequest(string url)
    {
        var client = new WebClient();
        var content = client.DownloadString(url);

        return content;
    }

4 个答案:

答案 0 :(得分:2)

你应该可以像以下一样直截了当地做事:

var client = new WebClient();
var content = client.DownloadString("<YOUR URL>");
var number = Int32.Parse(content);

MSDN documentation for DownloadString(string)

答案 1 :(得分:2)

如果文档只包含没有任何HTML的数字,则应该有效:

public string GetWebRequest()
{
    return webBrowser1.Document.Body.InnerText;
}

答案 2 :(得分:1)

几年前我在Web scraping in .NET写了一篇博客文章。你可以尝试那里的技术。希望它们不会过时。

例如:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.UserAgent = _UserAgent;
request.CookieContainer = cookies;  // optional

using (WebResponse response = request.GetResponse())
{
  using (Stream responseStream = response.GetResponseStream())
  {
    using (StreamReader reader = new StreamReader(responseStream))
    {
      html = reader.ReadToEnd();
    }
  }
}

请记住,您的浏览器正在发送User-Agent标头,可能正在发送Cookie,可能正在通过已配置的代理服务器等。特别是对于安全或内部网站点,简单的WebClient调用可能不够。您可能需要使用Fiddler进行一些检查,如@SLaks建议的那样。

答案 3 :(得分:0)

您可以将页面HTML / TEXT内容加载到字符串中,然后使用字符串函数来提取数字。