在项目中,我想到的是我希望能够查看一个网站,从该网站检索文本,并在以后对该信息做一些事情。
我的问题是从网站检索数据(文本)的最佳方法是什么。在处理静态页面与处理动态页面时,我不确定如何执行此操作。
通过一些搜索,我发现了这个:
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?
由于
答案 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");