我正在抓取一个网页,其中包含章节名称和文本的单独div。我需要记录哪个文本属于哪个章节。 我用于抓取的方法是选择章节div标签并循环遍历所有元素。然后Text div标记并循环遍历所有文本元素。 章节标签的数量少于文本。这意味着一章内可以有多个文本。 如何记录章节与文字? 请帮忙!
我的Jsoup代码
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();
}
示例网页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>
答案 0 :(得分:0)
尝试这样的事情怎么样:
Elements elms =doc.select("div.chapter, div.chapterText");
这可能会给出两种类型的div的组合列表,这些div可以迭代,并且只要内部div的类从EnglishText
变为chapno
,就会指示新章的开头
此外,不是匹配包装器div,也许最好选择内部潜水以避免另一级匹配,如下所示:
Elements elms =doc.select("div.chapter div, div.chapterText div");