你使用Jsoup来获取网站。该网站有多个div类,如:
<div class="itemcategories">
Category: <a id="cat_result_7_newamerican" class="category" rel="newamerican" href="/search?cflt=newamerican&find_loc=willowbrook%2C+IL">American (New)</a>
</div>
<div class="itemcategories">
Categories:
<a id="cat_result_6_breakfast_brunch" class="category" rel="breakfast_brunch" href="/search?cflt=breakfast_brunch&find_loc=willowbrook%2C+IL">Breakfast & Brunch</a>,
<a id="cat_result_6_tradamerican" class="category" rel="tradamerican" href="/search?cflt=tradamerican&find_loc=willowbrook%2C+IL">American (Traditional)</a>
</div>
等等。
如果我使用以下查询选择器:
categories = doc.select("div[class=itemcategories] > a[class=category]");
直接从 div class =“itemcategories”父级下降的每个子元素都存储在Elements对象的下一个索引中。所以我无法确定哪些孩子属于哪个父母。有没有办法'连接'每个div类中的所有子节点并将它们保存在Elements对象的单独索引中?
答案 0 :(得分:3)
如何分两步完成?
Elements parents = doc.select("div.itemcategories");
for (Element parent : parents)
{
Elements categories = parent.select("a.category");
// do something with categories
}
请注意使用.foo
代替[class=foo]
选择器语法。
N.B。我对jsoup的API并不十分熟悉,所以这段代码可能不完全正确。
答案 1 :(得分:0)
除了@Matt Ball解决方案,我已经找到了一步解决方案:
// Select the parent's
categories = doc.select(".itemcategories");
然后只需使用children()方法获取children和text()方法即可获得所需的文本:
categories.get(counter).children().text();