无法用HTML敏捷包检索输入标签
问题描述:
我试图为输入标签刮取随机站点。无法用HTML敏捷包检索输入标签
所以我需要写这样的方式,它将与大多数网站一起工作。
目前我有
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
HtmlAgilityPack.HtmlDocument dom = new HtmlAgilityPack.HtmlDocument();
dom.LoadHtml(e.Result);
var node = dom.DocumentNode.Element("html");
var inputs = node.ChildNodes["body"].Descendants("input");
,但是这是行不通的。
节点返回我想要的数据,但输入始终为空。
当我做node.ChildNodes["body"].Descendants().ToList();
我看到名为“input
”的条目。
我这么想吗?
答
你的代码很好,只是你验证的方式是错误的。截图中所有那些null
值并不表示IEnumerable<T>
为空,您可以尝试在监视窗口中调用inputs.ToArray()
或inputs.ToList()
来验证结果。
记住IEnumerable<T>
懒加载的项目,直到必要的,例如,直到你遍历,调用ToList()
/ToArray()
等
+0
不知道这一点。非常有用。谢谢。 – 2014-10-04 04:19:58
我不能重现该问题,你是怎么检查'inputs'价值? 'var inputs = node.ChildNodes [“body”]。后裔(“input”)。ToList()'? – har07 2014-10-04 02:37:12
请更新您的示例,其中显示“不工作”的代码以及究竟“结果为空”的代码(因为如果根据我的理解,“后代”应该返回空的枚举)。 – 2014-10-04 03:09:07
@ har07这会产生一个没有任何内容的集合。 – 2014-10-04 03:46:46