首页 > 解决方案 > HtmlAgilityPack 解析 Web 数据以在 Android C# 中选择第二个属性

问题描述

我在 Xamarin 中使用 HtmlAgilityPack for android 解析网站。我知道有 first() 关键字,但有人知道我如何能够访问 html 文本的第二个实例吗?例如,我只想查看应用示例图片中显示的“目前不提供到达预测”。

应用示例图片

void Btn_Click(object sender, System.EventArgs e)
{
    HtmlWeb hw = new HtmlWeb();
    //stores site in a document object of HTMLDocument class
    HtmlDocument document = hw.Load("https://broncoshuttle.com/simple/routes/3164/stops/36359");
    HtmlNodeCollection nodes = document.DocumentNode.SelectNodes("//ul//li[contains(.,'')] ");
    string result = "";
    foreach( var item in nodes)
    {
        result += item.InnerText;
    }

    MyTextView.Text = result;
}

标签: c#androidxamarinvisual-studio-2015html-agility-pack

解决方案


如果我可以控制 HTML,我可能会使用 HTML 类error-massage来使 HTML 标记更具语义性并更精确地搜索。目前您可以使用简单的HtmlNodeCollection索引器或Enumerable.Skip()Enumerable.Take()Linq 扩展方法:

// errpr-message HTML class and SelectSingleNode().
HtmlNode error = document.DocumentNode.SelectSingleNode(@"//*[contains(concat("" "", normalize-space(@class), "" ""), "" error-message "")]");
// HtmlNodeCollection indexer.
HtmlNode error = nodes[1];
// Linq.
HtmlNode error = nodes.Skip(1).Take(1).SingleOrDefault();

欲了解更多信息检查:


推荐阅读