从Java中获取HashMap中的元素?

时间:2014-10-18 11:11:39

标签: java hashmap jsoup

我目前有以下代码,它从网页获取一个表,并将这些元素放入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

2 个答案:

答案 0 :(得分:0)

在循环中使用数据地图上的狗名称:

for(String dog : data.keySet())
{
    // use dog as required
}

答案 1 :(得分:0)

首先迭代地图的关键列表并获取可用的狗。 然后在那里处理你的逻辑..

&#13;
&#13;
for (String dog: data.keySet()) {

  String dogPage = "http://www.gbgb.org.uk/raceCard.aspx?dogName=" + dog;
  Document doc1 = Jsoup.connect(dogPage).get();
  ....................
}
&#13;
&#13;
&#13;