c#-XPath表达式在HtmlAgilityPack中不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-XPath表达式在HtmlAgilityPack中不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1538字,纯文字阅读大概需要3分钟。
内容图文
我知道这可能是我对XPath的不了解,但请允许我确认一下,因为我已经在Google上进行了足够的搜索.
我有一个网站,希望从中获得新闻标题:www.farsnews.com(波斯语)
在firefox下使用FireBug和FireXpath扩展,并手动提取和测试与标题匹配的多个Xpath表达式,例如:
* html/body/div[2]/div[2]/div[2]/div[*]/div[2]/a/div[2]
* .//*[@class="topnewsinfotitle "]
* .//div[@class="topnewsinfotitle "]
我还使用XPather扩展对它们进行了测试,它们似乎工作得很好,但是当我对其进行测试时……SelectNodes返回null!
有任何线索或提示吗?
这是代码的一部分:
listBox2.ResetText();
HtmlAgilityPack.HtmlWeb w = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = w.Load("http://www.farsnews.com");
HtmlAgilityPack.HtmlNodeCollection nc = doc.DocumentNode.SelectNodes(".//div[@class=\"topnewsinfotitle \"]");
listBox2.Items.Add(nc.Count+" Items selected!");
foreach (HtmlAgilityPack.HtmlNode node in nc) {
listBox2.Items.Add(node.InnerText);
}
谢谢.
解决方法:
我已经测试了你的表情.正如Dialecticus在评论中所提到的那样,您有一个结尾空间,该空格不应存在.
//div[@class='topnewsinfotitle ']/text()
返回“空序列”,请参阅评估:http://xmltools.dk/EQA-ACA6
//div[@class='topnewsinfotitle']/text()
返回标题列表,请参阅:http://xmltools.dk/EgA2APAj
但是,如果可能还有其他类,请使用以下代码(http://xmltools.dk/EwA8AJAW):
//div[contains(@class, 'topnewsinfotitle')]/text()
(我看到它们是我提供的链接中的编码问题,但是,对于含义和所有XPath表达式都无关紧要,您可以删除/ text()以获得节点,而不仅仅是文本)
但是,如果您拥有此站点,则应在头条新闻中提供XML(可能是RSS或ATOM)或JSON,它们将具有更好的性能,并且最重要的是,它更防弹.
内容总结
以上是互联网集市为您收集整理的c#-XPath表达式在HtmlAgilityPack中不起作用全部内容,希望文章能够帮你解决c#-XPath表达式在HtmlAgilityPack中不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。