我正在尝试用java编写一个应用程序,它使用这里获得的信息https://en.wikipedia.org/wiki/List_of_cities_in_Switzerland。具体来说,我需要一份瑞士城市列表,我必须从链接表中提取。我需要使用Jsoup来做到这一点,但我在做这件事时遇到了一些麻烦。具体来说,我的程序不能"看"或选择此特定表格。我已经尝试了几种方法,花了好几个小时试图解决它,但无济于事。我已经设法选择了页面底部的表格,关于"瑞士文章"和"欧洲城市名单",
Document doc = Jsoup.connect("https://en.wikipedia.org/wiki/List_of_cities_in_Switzerland").get();
Elements table = doc.select("table");
但是,出于某种原因,似乎"跳过"我要找的桌子。 (数组对于表[0] - 表[2]看似空表,而表[3]是"瑞士文章"一个。)"复制选择器"选项Chrome也让我无法工作,因为输出是一个size = 0数组,并且在尝试解析它时我得到了一个空指针异常。我是HTML和Jsoup的新手,无法理解我的问题所在。
答案 0 :(得分:2)
Use this selector -
doc.select(".wikitable");
Use also the User Agent
string that matches your browser, to make sure you get the same result in your browser and in your application, like this -
Document doc = Jsoup.connect("https://en.wikipedia.org/wiki/List_of_cities_in_Switzerland")
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0")
.get();
Elements table = doc.select(".wikitable");
答案 1 :(得分:1)
你试过了吗?
doc.select("div.mw-content-text > table.wikitable");
它应该按照jsoup的doc页面工作: https://jsoup.org/apidocs/org/jsoup/select/Selector.html
你可以进一步了解它:)