2014-10-18 2 views
0

В настоящее время у меня есть следующий код, который получает таблицу с веб-страницы и помещает элементы в HashMap (я думаю).Получить элементы из HashMap в Java?

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-го уровней? (Пятая колонка на этой странице: http://www.gbgb.org.uk/raceCard.aspx?dogName=A%20Real%20Legend)

+2

'для (String собаки: data.keySet()) {// использовать собаку}' –

ответ

0

Используйте имена собак на карте данных в цикле:

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

первым перебирать список ключей к карте, и получить доступные собака. затем обработать вашу логику внутри, что ..

for (String dog: data.keySet()) { 
 

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

Смежные вопросы