Jsoup解析的字段比java中使用的必要字段多

Jsoup解析的字段比java中使用的必要字段多,java,parsing,jsoup,Java,Parsing,Jsoup,所以我一直在尝试解析这个网站上的城市: 我是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

所以我一直在尝试解析这个网站上的城市:

我是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());

}

例如,我得到了这个Aarberg-Aarberg-Bern,而我只想要Aarberg

你添加了太多的
select
调用,这太复杂了。您可以通过使用一个
select
来简化代码,您可以在其中指向要查找的每个元素。使用空格来描述祖先与后代的关系

无论如何,
select(“td”)
在选中的
tr
中拾取每个
td
。然后,您将在这些选定的
td
中收集每个
a
链接

要在每个
tr
中仅拾取第一个
td
,可以使用选择器
td:eq(0)
。然后您可以从第一个
td
中选择每个
a

无论如何,您的代码应该简化为:

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

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

要了解有关选择器的更多信息,请访问此处,您可以找到
:eq(n)

:eq(n)
:查找同级索引等于
n
的元素;e、 g.
表单输入:等式(1)


通过添加如此多的
select
调用,您将事情复杂化了。您可以通过使用一个
select
来简化代码,您可以在其中指向要查找的每个元素。使用空格来描述祖先与后代的关系

无论如何,
select(“td”)
在选中的
tr
中拾取每个
td
。然后,您将在这些选定的
td
中收集每个
a
链接

要在每个
tr
中仅拾取第一个
td
,可以使用选择器
td:eq(0)
。然后您可以从第一个
td
中选择每个
a

无论如何,您的代码应该简化为:

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

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

要了解有关选择器的更多信息,请访问此处,您可以找到
:eq(n)

:eq(n)
:查找同级索引等于
n
的元素;e、 g.
表单输入:等式(1)