0

在我的项目中,我希望能够查看一个网站,从该网站检索文本,并稍后对这些信息进行处理。

我的问题是从网站检索数据(文本)的最佳方式是什么。我不确定在处理静态页面与处理动态页面时如何做到这一点。

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

        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

4 回答 4

1

我不想告诉你,但这就是网页的外观,它是一个长长的 html 标记/内容流。这将由浏览器呈现为您在屏幕上看到的内容。我能想到的唯一方法就是自己解析为html。

在谷歌上快速搜索后,我发现了这篇堆栈溢出文章。 在 C# 中解析 html 的最佳方法是什么?

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

于 2013-10-07T17:31:11.367 回答
0

您可以只使用 WebClient:

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

在上面的示例htmlFromPage中将包含 HTML,然后您可以对其进行解析以找到您正在寻找的数据。

于 2013-10-07T17:28:32.463 回答
0

您所描述的称为网络抓取,并且有很多库可以为 Java 和 C# 执行此操作。目标站点是静态的还是动态的并不重要,因为最终都会输出 HTML。另一方面,JavaScript 或 Flash 重站点往往会出现问题。

于 2013-10-07T17:29:09.333 回答
0

请试试这个,

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

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

于 2013-10-07T17:30:55.983 回答