【问题标题】:Need help for parsing HTML in C#在 C# 中解析 HTML 需要帮助
【发布时间】:2009-09-30 14:06:54
【问题描述】:

为了个人使用,我正在尝试解析一个小 html 页面,该页面以简单的网格显示法国足球锦标赛的结果。

var Url = "http://www.lfp.fr/mobile/ligue1/resultat.asp?code_jr_tr=J01";
WebResponse result = null;
WebRequest req = WebRequest.Create(Url);
result = req.GetResponse();
Stream ReceiveStream = result.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding(0);
StreamReader sr = new StreamReader(ReceiveStream, encode);

                while (sr.Read() != -1)
                {
                    Line = sr.ReadLine();
                    Line = Regex.Replace(Line, @"<(.|\n)*?>", " ");
                    Line = Line.Replace("&nbsp;", "");
                    Line = Line.TrimEnd();
                    Line = Line.TrimStart();

然后我真的不知道是逐行还是 一个完整的流,以及如何仅检索带有下一个数字的团队名称,即分数。

最后我想把两个团队的分数放在一个列表或 xml 中,以便在电话应用程序中使用它

如果有人有想法,那将是非常感谢!

【问题讨论】:

    标签: c# html parsing stream


    【解决方案1】:

    【讨论】:

    • 我正要建议这个。
    • +1 第六不要用 Regex 解析 HTML 问题奖金
    【解决方案2】:

    您可以将流放入XmlDocument,允许您通过XPath 之类的方式进行查询。或者你可以使用LINQ to XMLXDocument

    虽然它并不完美,因为 HTML 文件并不总是格式良好的 XML(我们不知道吗!),但它是一个使用框架中已有的东西的简单解决方案。

    【讨论】:

    • 这假设 HTML 是格式良好的 XML,这是一个很长的尝试。
    • 哈!我刚刚编辑并记下了这一点,当屏幕回来时 - 我看到了这条评论!
    • 我们的编辑跨越了路径,就像两艘船在夜里经过... =P
    【解决方案3】:

    您需要一个SgmlReader,它为任何 SGML 文档(实际上是 HTML 文档)提供类似 XML 的 API。

    【讨论】:

      【解决方案4】:

      您可以使用 Regex.Match 方法提取球队名称和得分。检查 html 以查看每一行是如何构建的。这是屏幕抓取中的常用技术。

      【讨论】:

      • 而吸烟是缓解压力的常用方法。这并不意味着它是一个好主意,或者它长期有效。 ;)
      • 好吧,吸烟总是对你的健康有害,但我不会说在这种情况下 Match 方法总是不好,不确定他的需求。很高兴在做出选择之前了解所有选项的优劣。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2016-07-14
      • 1970-01-01
      相关资源
      最近更新 更多