簡體   English   中英

HTMLAgilityPack選擇具有不同Xpath ID C#的多個節點

[英]HTMLAgilityPack selecting Multiple nodes with different Xpath ID C#

我正在使用HTMLAgilityPack從亞馬遜提取Digital Media表,這是我的工作。 xpath顯示它們都有不同的ID示例:

    //*[@id="result_0"]/td[2]/div/a
   //*[@id="result_1"]/td[2]/div/a
   //*[@id="result_2"]/td[2]/div/a

因此,我不能隨便使用selectNodes,除非周圍沒有這個? 目前,我正在這樣做,但這似乎不對嗎?

        var doc = web.Load("https://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Ddigital-music&field-keywords="+txtInput.Text+"&page="+nowNum+"");

     for (int i = 0; i < 50; i++)
        {
         try
             {
                node = doc.DocumentNode.SelectSingleNode("//*[@id=\"result_"+i+"\"]/td[2]/div/a").InnerText;
             }
        catch (exception)
        {
        throw;
        }
    }

我做的方式有什么問題嗎? 還是有一種方法可以使用selectNodes,而不必使用這些具有不同ID的Xpath分別選擇每個節點?

謝謝螞蟻

您可以研究start-with ,這樣您可以使用SelectNodes

var nodes = doc.DocumentNode.SelectNodes("//*[start-with(@id, 'result_')]/td[2]/div/a");

這樣,您可以獲得所有result_X節點,我相信這樣做會更好,因為您的for循環假定有50個結果。
希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM