从网站上读取信息c#

时间:2013-10-07 17:26:10

标签: c# java web

在项目中,我想到的是我希望能够查看一个网站,从该网站检索文本,并在以后对该信息做一些事情。

我的问题是从网站检索数据(文本)的最佳方法是什么。在处理静态页面与处理动态页面时,我不确定如何执行此操作。

通过一些搜索,我发现了这个:

        WebRequest request = WebRequest.Create("anysite.com");
        // If required by the server, set the credentials.
        request.Credentials = CredentialCache.DefaultCredentials;
        // Get the response.
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        // Display the status.
        Console.WriteLine(response.StatusDescription);
        Console.WriteLine();

        // Get the stream containing content returned by the server.
        using (Stream dataStream = response.GetResponseStream())
        {
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
            // Read the content. 
            string responseString = reader.ReadToEnd();
            // Display the content.
            Console.WriteLine(responseString);
            reader.Close();
        }

        response.Close();            

因此,通过我自己运行它,我可以看到它从网站返回html代码,而不是我正在寻找的。我最终希望能够输入网站(例如新闻文章),并返回文章的内容。这可能在c#还是Java?

由于

4 个答案:

答案 0 :(得分:1)

我讨厌给你制造这个,但这就是网页看起来的样子,它是一长串的html标记/内容。这将由浏览器呈现为您在屏幕上看到的内容。我能想到的唯一方法是自己解析为HTML。

在google上快速搜索后,我发现了这个堆栈溢出文章。 What is the best way to parse html in C#?

但是我打赌你认为这会比你预期的要容易一些,但这就是编程总是挑战问题的乐趣

答案 1 :(得分:0)

您可以使用WebClient:

using(var webClient = new WebClient())
{
   string htmlFromPage = webClient.DownloadString("http://myurl.com");
}

在上面的示例中,htmlFromPage将包含HTML,然后您可以解析该HTML以查找您要查找的数据。

答案 2 :(得分:0)

您所描述的内容称为 web scraping ,并且有很多库可以为Java和C#做到这一点。目标站点是静态的还是动态的并不重要,因为它们最终都输出HTML。另一方面,JavaScript或Flash重型网站往往存在问题。

答案 3 :(得分:0)

请试试这个,

System.Net.WebClient wc = new System.Net.WebClient(); 

string webData = wc.DownloadString("anysite.com");