2017-06-22 23 views
0

タイトルの簡単な説明では、すべてのタグ発生のすべてのInnerTextを取得してリストに追加しようとしています。ここに私のコードは私のhtmlとしてaswellです:c#HtmlAgilityPack、特定のタグのすべての発生のInnerTextを取得する方法は?

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"],[... 

答えて

0

体内のすべてのタグ:docに

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

タグ:

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

@Pangこれは本当に問題ではありませんでしたが、それよりもすべてのinnertextの結合された文字列が1つのノードとして表示されます。基本的にこのように:AK-47 |アクアマリンリベンジ(工場新) "、" 33.8 "、" 34.34 "、" 25.89 ".... – Nikolas

0

SOLUTION:それはのように扱われなければなら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); 
    } 
} 
関連する問題