2016-05-11 16 views
0

で使用される、必要以上のフィールドを解析し、だから私はこのサイトから都市を解析しようとしてきた:https://en.wikipedia.org/wiki/List_of_cities_in_SwitzerlandはJsoupは、Java

私はjsoupする新たなんだので、私は都市の名前を取得しようとしました、しかし、私は都市のすべての要素を得る。例えば

Document doc = Jsoup.connect("https://en.wikipedia.org/wiki/List_of_cities_in_Switzerland").userAgent("Mozilla").get(); 
String title = doc.title(); 

Elements test = doc.select("table.wikitable").select("tbody").select("tr"); 

for (Element link : test) { 
    Elements temp = link.select("td").select("a"); 
    System.out.println(temp.text()); 

} 

私はあなたが非常に多くselectの呼び出しを追加することで、物事が複雑になり過ぎているだけAarberg

答えて

3

を望んでいる間、私は、このAarberg Aarbergベルンを取得します。コードを簡略化するには、見つけたい要素を指す1つのselectを使用します。祖先と子孫の関係を記述するためにスペースを使用します。

とにかくselect("td")は、すべてtdを選択して選択します。trあなたはaの各リンクを集めて選択したtdにリンクしています。

それぞれtrの最初のtdを選択するには、セレクタtd:eq(0)を使用します。次に、最初からそれぞれaを選択してtdから選択することができます。とにかく、あなたのコードがより多くのようなものに単純化することが

:セレクタの詳細については

Elements links = doc.select("table.wikitable tr td:eq(0) a"); 

for (Element link : links) { 
    System.out.println(link.text()); 
} 

あなたは:eq(n)

:eq(n)の説明を見つけることができhttp://jsoup.org/cookbook/extracting-data/selector-syntaxを参照してください。その兄弟要素を見つけますインデックスはnに等しい。例えばform input:eq(1)