2016-09-24 3 views
1
<ol class="list-data-b"> 
<li class="in-ttl-b">(a) kanji; a Chinese character [ideograph] 
    <ul class="list-data-b-in"><li class="text-jejp text-c"><span class="ex">漢字で書く</span></li><li class="text-jeen text-c">write in <i>kanji</i> [<i>Chinese characters</i>]</li></ul> 
    <ul class="list-data-b-in"><li class="text-jejp text-c"><span class="ex">常用漢字</span></li><li class="text-jeen text-c"><i>Chinese characters</i> for everyday use (in Japan)</li></ul> 
</li> 
</ol> 

У меня есть HTML так, как я могу получить часть данных:Использование HTMLAgilitypack для получения данных

  • (а) кандзи; китайский иероглиф [иероглиф]
  • 漢字 で 書 く
  • пишут иероглифами [китайские иероглифы]
  • 常用 漢字
  • китайские иероглифы для повседневного использования (в Японии)

Это мой код.

Dim node2 = HTMLDoc.DocumentNode.SelectNodes("//ul[@class='list-data-b-in']") 
     If node2 IsNot Nothing Then 
      For Each node In node2 
       Dim Japnodes As HtmlAgilityPack.HtmlNode = node.SelectSingleNode("//li[@class='text-jejp text-c']") 
       txtMean.AppendText(Japnodes.InnerText) 
       txtMean.AppendText(vbNewLine) 
       Dim Engnodes As HtmlAgilityPack.HtmlNode = node.SelectSingleNode("//li[@class='text-jeen text-c']") 
       txtMean.AppendText(Engnodes.InnerText) 
       txtMean.AppendText(vbNewLine) 
      Next 

ответ

0

Выбор первого текста может быть выполнен, как описано в your previous question. Теперь, чтобы получить каждую пару китайских/японско-английских текстов, вы можете перебирать элементы ul, а затем из каждого ul получить два элемента, которые содержат целевой текст.

Вот консольное приложение демо:

Dim lis = HTMLDoc.DocumentNode.SelectNodes("//li[@class='in-ttl-b']") 
For Each li As HtmlNode in lis 
    Dim txt = li.SelectSingleNode("text()[1]") 
    Console.WriteLine(txt.InnerText) 
    For Each ul As HtmlNode in li.SelectNodes("ul") 
     Dim japNode = ul.SelectSingleNode("li/span") 
     Dim engNode = ul.SelectSingleNode("li[@class='text-jeen text-c']") 

     Console.WriteLine(japNode.InnerText) 
     Console.WriteLine(engNode.InnerText) 
    Next 
Next 

dotnetfiddle demo

выход:

(a) kanji; a Chinese character [ideograph] 

漢字で書く 
write in kanji [Chinese characters] 
常用漢字 
Chinese characters for everyday use (in Japan)