HtmlAgilityPackでnullを返します。

c# html-agility-pack

質問

私はこのコードを使用したいが、このすべてのパラメータで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']");

            }
        }

受け入れられた回答

男、あなたはxpathセレクタにタイプミスがあるようです。

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

ここでは、 class属性値metatag-topi metatag-keywords持つすべての<a>タグを選択する//a[@class='metatag-topi metatag-keywords']式を使用します。しかし、あなたの表現を適用しようとしているページにはそのような要素は含まれていませんが、 <a class="metatag-topic metatag-keywords">topic最後にc文字がありません) 。

その行を次のように変更してください:

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

それはうまくいくはずです。


人気のある回答

ノードが見つからない場合、 DocumentNode.SelectNodesはnullを返すことがあります。

なぜDocumentNode.SelectNodesがnullを返すのかをチェックすることができます




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ