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처럼, 나는 데이터의 일부를 얻을 수있는 방법 :

  • (A) 한자; 한자 [한자]
  • 漢字 で 書 く
  • 한자
  • 쓰기 [한자]
  • 常用 漢字
  • (일본에서) 매일 사용
  • 한자

이 내 코드입니다.

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) 
여기

는 콘솔 애플리케이션이다 데모