1

我想使用这段代码,但它在所有这些参数中都返回 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']");

            }
        }
4

2 回答 2

0

DocumentNode.SelectNodes如果没有找到节点,则可能返回 null 。

你可以检查这个相关的Why DocumentNode.SelectNodes return null

于 2013-10-19T13:05:47.353 回答
0

伙计,您的 xpath 选择器中似乎有错字,请参阅:

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");

在这里,您使用//a[@class='metatag-topi metatag-keywords']表达式来选择具有属性 value的所有<a>标签。但问题是,您尝试应用表达式的页面不包含此类元素,但有一些(单词末尾缺少字母)。classmetatag-topi metatag-keywords<a class="metatag-topic metatag-keywords">ctopic

只需将该行更改为:

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topic metatag-keywords']");

它应该可以工作。

于 2013-10-19T17:13:06.493 回答