我目前有以下代码,它从网页获取一个表,并将这些元素放入HashMap(我认为)。
Document doc = Jsoup.connect(
"http://www.sportinglife.com/greyhounds/abc-guide").get();
Element tableHeader = doc.select("tbody").first();
Map<String, String> data = new HashMap<>();
for (Element element : tableHeader.children()) {
// Here you can do something with each element
if (element.text().indexOf("Pelaw Grange") > 0
|| element.text().indexOf("Shawfield") > 0
|| element.text().indexOf("Shelbourne Park") > 0
|| element.text().indexOf("Harolds Cross") > 0) {
// do nothing
} else {
String dog = element.select("td:eq(0)").text();
String race = element.select("td:eq(1)").text();
data.put(dog, race);
}
}
analyseRunners(data);
}
这似乎工作正常,我现在需要它运行另一种方法“analyseRunners”,它需要通过每只狗并使用“狗”名称访问另一个有另一个表的网页。这是我到目前为止所拥有的......
String dogPage = "http://www.gbgb.org.uk/raceCard.aspx?dogName=" + dog;
Document doc1 = Jsoup.connect(dogPage).get();
int firsts = 0, seconds = 0, thirds = 0;
Element tblHeader = doc1.select("tbody").first();
for (Element element1 : tblHeader.children()){
String position = element1.select("td:eq(4)").text();
if (position.equals("1st")){
firsts++;
} else if (position.equals("2nd")){
seconds++;
} else if (position.equals("3rd")){
thirds++;
} else {
//do nothing
}
}
System.out.println("Firsts: " + firsts);
System.out.println("Seconds: " + seconds);
System.out.println("Thirds: " + thirds);
正如你所看到的,我正试图使用上面第一种方法中的“狗”导航到jSoup中的网页...这不起作用,因为它说“狗”无法解决。我如何从HashMap中获取狗的名字并循环通过每只狗来计算它有多少1,2,3和3? (本页第五栏:http://www.gbgb.org.uk/raceCard.aspx?dogName=A%20Real%20Legend)
答案 0 :(得分:0)
在循环中使用数据地图上的狗名称:
for(String dog : data.keySet())
{
// use dog as required
}
答案 1 :(得分:0)
首先迭代地图的关键列表并获取可用的狗。 然后在那里处理你的逻辑..
for (String dog: data.keySet()) {
String dogPage = "http://www.gbgb.org.uk/raceCard.aspx?dogName=" + dog;
Document doc1 = Jsoup.connect(dogPage).get();
....................
}
&#13;