c# - 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;
}
解决方案
如果我可以控制 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();
欲了解更多信息检查:
- 维基百科上的语义 HTML页面
- MDN 上的语义页面
- 如何使用 XPath 通过 CSS 类查找元素?关于 StackOverflow 的讨论
推荐阅读
- jquery - 提交时关闭表单弹出窗口
- python - 聚类后如何更改 dtaidistance 图的大小?
- python - 使用 pyformat 进行条件格式化
- sublimetext3 - SublimeText3 插件 - 监听应用程序或窗口关闭事件
- visual-studio - 安装包 Visual Studio “检测到依赖循环”
- linux-kernel - Kernel 5.3 编译失败:没有规则来生成目标 zImage
- c# - LINQ 到 XML。如何查询列表
使用 Linq 递归 - java - 带有 maven 和 tomcat 的 AXIS2 Web 服务,部署为 aar
- cqrs - 如何处理命令总线上的并发请求?
- c++11 - 有没有办法从其专业化调用泛型类模板的实现?