[英]Return null in HtmlAgilityPack
我想使用此代码,但它在所有这些参数中都返回NULL! 您能帮忙解决它还是什么问题?
单击此处查看发生了什么的图片。
代码:
HtmlWeb hw = new HtmlWeb();
private void button1_Click(object sender, EventArgs e)
{
Crawler("http://www.avval.ir/directory", 0);
}
public void Crawler(string url, int pid)
{
try
{
HtmlAgilityPack.HtmlDocument doc = hw.Load("http://www.avval.ir/directory");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");
HtmlNodeCollection nodes2 = doc.DocumentNode.SelectNodes("//div[@class='pagination']/a[@href]");
HtmlNodeCollection phone = doc.DocumentNode.SelectNodes("//p[@class='phone fRight ml10']");
}
}
如果未找到任何节点,则DocumentNode.SelectNodes
可能返回null。
您可以检查与此相关的原因,为什么DocumentNode.SelectNodes返回null
伙计,看来您的xpath选择器中有错字,请参阅:
HtmlNodeCollection nodes =
doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");
在这里,您使用//a[@class='metatag-topi metatag-keywords']
表达式,该表达式选择具有class
属性值metatag-topi metatag-keywords
所有<a>
标签。 但事实是,您要应用表达式的页面不包含此类元素,但是有一些<a class="metatag-topic metatag-keywords">
(在单词topic
的结尾缺少c
字母) 。
只需将该行更改为:
HtmlNodeCollection nodes =
doc.DocumentNode.SelectNodes("//a[@class='metatag-topic metatag-keywords']");
它应该工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.