2016-03-30 2 views
0

Ich scrape eine Webseite, die separate div (s) für Kapitelname und Text hat. Ich muss aufzeichnen, welcher Text zu welchem ​​Kapitel gehört. Die Methode, die ich zum Scrappen verwende, besteht darin, Kapitel div tag auszuwählen und alle Elemente durchzulaufen. Dann Text div Tag und Schleife durch alle Textelement. Es gibt weniger Kapitel-Tags als der Text. Das bedeutet, dass es innerhalb eines Kapitels mehrere Texte geben kann. Wie kann ich Kapitel gegen Text speichern? Bitte helfen!Jsoup- So binden Sie zwei nicht verschachtelte div Tags beim scrapen

Mein Jsoup-Code

Elements chapInfos =doc.select("div.chapter"); 
for(Element chapInfo : chapInfos) 
     { 
      Elements tempChap= chapInfo.select("div.chapno"); 
      String ChapterNo = tempChap.text(); 
     } 
     Elements Texts =doc.select("div.chapterText"); 
     for(Element text : Texts) 
     { 
      Elements tempText= text.select("div.EnglishText"); 
      String FinalText = tempText.text(); 
     } 

Beispiel Webseite HTML

  <div class=chapter> 
     <div class=chapno>(1)</div> 
     </div> 

     <div class=chapterText> 
     <div class=EnglishText>Some Text</div> 
     </div> 
     <div class=chapterText> 
     <div class=EnglishText>Some Other Text</div> 
     </div> 

     <div class=chapter> 
     <div class=chapno>(2)</div> 
     </div> 

Antwort

0

Wie wäre es versucht, etwas wie folgt aus: Elements elms =doc.select("div.chapter, div.chapterText");

Dies würde vielleicht eine kombinierte Liste der beiden Arten von divs geben, kann wiederholt werden, und jederzeit ändert sich die Klasse des internen Div von EnglishText zu chapno, das würde den Beginn eines neuen Kapitels anzeigen.

Zusätzlich stattdessen den Wrapper div passenden, vielleicht könnte es eine bessere Idee sein, den internen Tauchgang wählen Sie eine andere Ebene passender wie dies zu vermeiden: Elements elms =doc.select("div.chapter div, div.chapterText div");

Verwandte Themen