【发布时间】:2013-06-04 13:15:13
【问题描述】:
我正在尝试从网站获取特定信息。现在我有这个 html 字符串,你可以看到我的代码,网站的 html 源代码放在“responseText”中。我知道我可以用 If 的语句来做到这一点,但这真的很乏味。我是新手,所以我不知道我在做什么。我确信必须有另一种更简单的方法来从网站检索信息......这是用于 Windows 商店的 c#,所以我不能使用 webclient。此代码获取字符串,但没有办法可以删除 html 代码,只留下变量或其他东西吗?我只想为网页执行此操作,并且我知道我想要的变量,因为我查看了网页的 html 代码。这不是一种从网站请求变量列表及其信息的方法吗?我只是有点迷失在这里。所以基本上我只想从 C# 中的网站获取特定信息,我正在为 Windows 商店制作应用程序。
StringBuilder sb = new StringBuilder();
// used on each read operation
byte[] buf = new byte[8192];
// prepare the web page we will be asking for
HttpClient searchClient;
searchClient = new HttpClient();
searchClient.MaxResponseContentBufferSize = 256000;
HttpResponseMessage response = await searchClient.GetAsync(url);
response.EnsureSuccessStatusCode();
responseText = await response.Content.ReadAsStringAsync();
【问题讨论】:
-
大多数开发人员可能会使用正则表达式来解析来自网站的 HTML 响应并提取感兴趣的值。看看使用正则表达式。
-
@MikePanter:使用正则表达式解析 HTML 的开发人员应该非常清楚这种方法的脆弱性。我更愿意使用 HTML Tidy 之类的东西。
-
请注意,您应该有
using语句以确保您正确处理您的HttpClient和HttpResponseMessage,并且您根本不使用buf。另外,考虑只使用HttpClient.GetStringAsync,而不是直接使用响应消息。 -
@JonSkeet:这取决于您如何编写正则表达式!我认为任何解析第三方网站的尝试都是脆弱的,无论解析技术如何。正则表达式易于维护。
-
@MikePanter:那么您一定对我使用了不同的正则表达式......我更愿意使用某种描述的文档模型。见stackoverflow.com/questions/1732348
标签: c# windows-8 windows-runtime html-parsing