1

Jsoupを使用してWebサイトを取得します。Webサイトには、次のような複数の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"親から直接派生する各子要素は、categoriesElementsオブジェクトの次のインデックスに格納されます。そのため、どの子がどの親に属しているかを判断する方法がありません。各divクラスのすべての子を「連結」して、Elementsオブジェクトの個別のインデックスに保存する方法はありますか?

4

2 に答える 2

3

2つのステップでそれを行うのはどうですか?

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ソリューションに加えて、私は1つのステップのソリューションを考え出しました。

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

次に、children()メソッドを使用して子を取得し、text()メソッドを使用して目的のテキストを取得します。

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