c # HtmlAgilityPack, как получить InnerText всех вхождений определенного тега?

Как кратко объяснено в заголовке, я пытаюсь захватить каждый InnerText каждого вхождения тега и добавить его в список. Вот мой код, а также мой html:

HTML-тело:

<body cz-shortcut-listen="true">
{"draw":1,"recordsTotal":9437,"recordsFiltered":9437,"data":[["
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115739257\&quot;">AK-47 | Aquamarine Revenge (Factory New)&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;"href="\&quot;\/id\/115739257\&quot;">33.87&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115739257\&quot;">34.53&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;https:\/\/track.steamanalyst.com\/730\/115739257\/all\&quot;">25.9&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115739257\&quot;">164&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115739257\&quot;">-0.16&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115739257\&quot;">2.10945&lt;\/a&gt;"],["</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115734122\&quot;">AK-47 | Aquamarine Revenge (Minimal Wear)&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115734122\&quot;">23.44&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115734122\&quot;">21.85&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;https:\/\/track.steamanalyst.com\/730\/115734122\/all\&quot;">17.61&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115734122\&quot;">533&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115734122\&quot;">-2.65&lt;\/a&gt;","</a>
<a target="\&quot;_blank\&quot;" href="\&quot;\/id\/115734122\&quot;">0.94387&lt;\/a&gt;"],["</a>
</body>

Мой код:

List<string> Data = new List<string>();
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//a[@target]"))
{
    if(j <= 6)
    {
        Data.Add(node.InnerText);
        if (j == 6)
        {
            JsonDB.Add(Data[0], Data[1]);
            Data.Clear();
            j = 0;
        }
        else
        {
            j++;
        }
    }
}

Проблема с этим кодом: node.InnerText показывает объединенную строку всех InnerTexts всех тегов в теле! В основном он показывает это как первый узел в doc.DocumentNode.SelectNodes("//a[@target]"):

AK-47 | Aquamarine Revenge (Factory New)","33.8","34.34","25.89","170",
"-1.27","2.03181"],[...

person Community    schedule 22.06.2017    source источник


Ответы (2)


Все теги в теле:

doc.DocumentNode.SelectNodes("//a[@target]"))

Теги в документе:

doc.DocumentNode.SelectNodes(".//a[@target]"))
person André Basso de Almeida    schedule 22.06.2017
comment
@Pang На самом деле проблема была не в этом, а в том, что он показывает объединенную строку всех внутренних текстов как один узел. В основном так: АК-47 | Аквамариновая месть (Прямо с завода),33.8,34.34,25.89.... - person ; 22.06.2017

РЕШЕНИЕ. Перед переходом в HTML его необходимо рассматривать как объект JSON.

JObject jresponse = JObject.Parse(response);
foreach (JArray row in jresponse["data"])
{
    List<string> Data = new List<string>();
    foreach (JToken entry in row)
    {
        doc.LoadHtml(entry.ToString());
        HtmlNode node = doc.DocumentNode.SelectSingleNode("//a[@target]");
        Data.Add(node.InnerText);
    }
}
person Community    schedule 22.06.2017