我想使用此代码,但它在所有这些参数中返回NULL!你能帮忙解决一下这个问题或者问题是什么?
click here了解显示发生了什么的图片。
代码:
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']");
}
}
答案 0 :(得分:0)
如果找不到节点,DocumentNode.SelectNodes
可能会返回null。
答案 1 :(得分:0)
伙计,您的xpath选择器中似乎有拼写错误,请参阅:
HtmlNodeCollection nodes =
doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");
您可以使用//a[@class='metatag-topi metatag-keywords']
表达式选择<a>
属性值class
的所有metatag-topi metatag-keywords
代码。但问题是,您尝试应用表达式的页面不包含此类元素,但在单词<a class="metatag-topic metatag-keywords">
的末尾有一些c
(缺少topic
个字母)
只需将该行更改为:
HtmlNodeCollection nodes =
doc.DocumentNode.SelectNodes("//a[@class='metatag-topic metatag-keywords']");
它应该有用。