1

你使用 Jsoup 来获取一个网站。该网站有多个 div 类,例如:

<div class="itemcategories">
Category: <a id="cat_result_7_newamerican" class="category" rel="newamerican" href="/search?cflt=newamerican&amp;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&amp;find_loc=willowbrook%2C+IL">Breakfast & Brunch</a>, 
<a id="cat_result_6_tradamerican" class="category" rel="tradamerican" href="/search?cflt=tradamerican&amp;find_loc=willowbrook%2C+IL">American (Traditional)</a>
</div>

等等。

如果我使用以下查询选择器:

categories = doc.select("div[class=itemcategories] > a[class=category]");

每个直接从div class="itemcategories" parent下降的子元素都存储在类别 Elements 对象的下一个索引中。所以我无法确定哪些孩子属于哪些父母。有没有办法“连接”每个 div 类中的所有子级并将它们保存在 Elements 对象的单独索引中?

4

2 回答 2

3

分两步做怎么样?

Elements parents = doc.select("div.itemcategories");
for (Element parent : parents)
{
    Elements categories = parent.select("a.category");
    // do something with categories
}

注意使用.foo代替[class=foo]选择器语法。

注意我对 jsoup 的 API 不是很熟悉,所以这段代码可能并不完全正确。

于 2013-02-12T03:08:54.270 回答
0

除了@Matt Ball 解决方案,我还想出了一步解决方案:

// Select the parent's
categories = doc.select(".itemcategories");

然后简单地使用 children() 方法来获取孩子和 text() 方法来获取所需的文本:

categories.get(counter).children().text();
于 2013-02-12T04:23:50.750 回答