【问题标题】:Getting specific information from a website C# windows store app从网站 C# windows store 应用程序获取特定信息
【发布时间】: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 语句以确保您正确处理您的HttpClientHttpResponseMessage,并且您根本不使用buf。另外,考虑只使用HttpClient.GetStringAsync,而不是直接使用响应消息。
  • @JonSkeet:这取决于您如何编写正则表达式!我认为任何解析第三方网站的尝试都是脆弱的,无论解析技术如何。正则表达式易于维护。
  • @MikePanter:那么您一定对我使用了不同的正则表达式......我更愿意使用某种描述的文档模型。见stackoverflow.com/questions/1732348

标签: c# windows-8 windows-runtime html-parsing


【解决方案1】:

此代码获取字符串,但是否有一种方法可以删除 html 代码而只保留变量或其他内容?

什么“变量”?你得到 HTML - 这是来自网络服务器的响应。如果你想去掉那个 HTML,这取决于你。您可能希望使用HTML Tidy 使其工作更愉快,但从 HTML 中提取相关信息的业务取决于您。 HTML 的设计目的不是作为原始信息源可供机器读取 - 它的目的是作为标记呈现给人类。

您应该调查这些信息是否可以在更机器友好的来源中获得,没有演示信息等。例如,可能有一些方法可以获取 JSON 或 XML 格式的数据。

【讨论】:

  • 所以你是说我需要做if语句并格式化它,没有其他更简单的方法吗?
  • @user1713352:我不知道您所说的“制作 if 语句并对其进行格式化”是什么意思——部分原因是您几乎没有向我们说明您要做什么。但是不,从 HTML(尤其是您无法控制的 HTML)中提取信息并不是特别简单 - 这就是为什么我建议您寻找以更友好的格式发布的相同信息。
猜你喜欢
  • 1970-01-01
  • 2011-06-17
  • 2023-03-17
  • 2017-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多