private WebPage parseDocFirstModel(URL url, Document doc) throws Exception { // 2 : horses Elements horsesUrl = doc.select("table.tablesorter.tableauLine tbody tr td:eq(1) a[href]"); Elements horsesCotes = doc.select("table.tablesorter.tableauLine tbody tr td:eq(11)"); Elements horsesJockey = doc.select("table.tablesorter.tableauLine tbody tr td:eq(7) a[href]"); Elements horsesTrainers = doc.select("table.tablesorter.tableauLine tbody tr td:eq(8) a[href]"); fl = new FinishList(); Elements horsesPredictions = doc.select("table.tablesorter.tableauLine tbody tr"); Elements jockeyWeights = doc.select("table.tablesorter.tableauLine tbody tr"); Elements horsesCordes = doc.select("table.tablesorter.tableauLine tbody tr"); Elements horsesOeilleres = doc.select("table.tablesorter.tableauLine tbody tr"); WpDetailsTurfoModelOne wp = new WpDetailsTurfoModelOne(url, null, null); for (int i = 0; i < horsesPredictions.size(); i++) { String name = horsesPredictions.get(i).select("td:eq(1) a").text().trim().toString(); Float weight = null; try { weight = Float.parseFloat( jockeyWeights .get(i) .select("td:eq(4)") .text() .trim() .toString() .replaceAll(",", ".")); } catch (Exception e) { logger.error(e); } Integer corde = null; try { corde = Integer.parseInt(horsesCordes.get(i).select("td:eq(5)").text().trim().toString()); } catch (Exception e) { logger.error(e); } String oeilleres = horsesOeilleres.get(i).select("td:eq(10)").text().trim().toString(); logger.debug("... name : " + name); logger.debug("... weight : " + weight); logger.debug("... corde : " + corde); logger.debug("... oeilleres : " + oeilleres); if (withHorseDetail) { try { int rang = (i + 1); Float cote = null; try { cote = Float.parseFloat(horsesCotes.get(i).text()); logger.debug(cote); } catch (Exception e) { cote = null; } // logger.debug("horse text name : " + horsesUrl.get(i).text()); String horseURL = new URL(url, horsesUrl.get(i).attr("href").trim().toString()).toString(); String horseJockey = horsesJockey.get(i).text(); String horseTrainer = horsesTrainers.get(i).text(); logger.debug("___________________________"); logger.debug("... new finish"); logger.debug("... rank : " + rang); logger.debug("... cote : " + cote); logger.debug("... horse found : " + horseURL); logger.debug("... jockey found : " + horseJockey); WebPage horseWebPage = this.horseParser.parse(new URL(horseURL)); // look in detailed statistics to get values corresponding to // the horseName Finish finish = new Finish(-1, cote, horseJockey, horseTrainer, horseWebPage); finish.setPoids(weight); finish.setCorde(corde); finish.setOeilleres(oeilleres); fl.getFinishes().add(finish); } catch (Exception e) { logger.error(e); } ((WpDetailsTurfo) wp).setFinishList(fl); } wp.addPronostic(name, weight, corde, oeilleres); } logger.debug("... set prediction"); try { wp.setPrediction(getPrediction(doc)); } catch (Exception e) { logger.error("... no prediction found"); logger.error(e); } logger.debug("... return"); // logger.debug(wp.serialize()); return wp; }
private WebPage parseDocSecondModel(URL url, Document doc) throws Exception { // TODO Auto-generated metho //2 : horses Elements horsesUrl = doc.select("table.tablesorter.tableauLine tbody tr td:eq(1) a[href]"); Elements horsesCotes = doc.select("table.tablesorter.tableauLine tbody tr td:eq(11)"); Elements horsesJockey = doc.select("table.tablesorter.tableauLine tbody tr td:eq(7) a[href]"); Elements horsesTrainers = doc.select("table.tablesorter.tableauLine tbody tr td:eq(8) a[href]"); fl = new FinishList(); Elements horsesDistance = doc.select("table.tablesorter.tableauLine tbody tr"); Elements horsesRecord = doc.select("table.tablesorter.tableauLine tbody tr"); WpDetailsTurfoModelTwo wp = new WpDetailsTurfoModelTwo(url, null, null); for (int i = 0; i < horsesDistance.size(); i++) { String name = horsesDistance.get(i).select("td:eq(1) a").text().trim().toString(); Integer distance = Integer.parseInt(horsesDistance.get(i).select("td:eq(4)").text().trim().toString()); String time = horsesRecord.get(i).select("td:eq(9)").text().trim().toString(); String timePatternParsing = "([0-9]+)'([0-9]+)\"([0-9]+)"; Pattern patternTime = Pattern.compile(timePatternParsing); java.util.regex.Matcher matcherTime = patternTime.matcher(time); Period period = null; if (matcherTime.find()) { period = new Period( 0, Integer.parseInt(matcherTime.group(1)), Integer.parseInt(matcherTime.group(2)), (Integer.parseInt(matcherTime.group(3)) * 100)); } else { logger.warn("... time is at a weird format"); } logger.debug("... name :" + name); logger.debug("... period :" + period.toStandardDuration().getMillis()); logger.debug("... distance :" + distance); if (withHorseDetail) { try { int rang = (i + 1); Float cote = null; try { cote = Float.parseFloat(horsesCotes.get(i).text()); logger.debug(cote); } catch (Exception e) { cote = null; } // logger.debug("horse text name : " + horsesUrl.get(i).text()); String horseURL = new URL(url, horsesUrl.get(i).attr("href").trim().toString()).toString(); String horseJockey = horsesJockey.get(i).text(); String horseTrainer = horsesTrainers.get(i).text(); logger.debug("___________________________"); logger.debug("... new finish"); logger.debug("... rank : " + rang); logger.debug("... cote : " + cote); logger.debug("... horse found : " + horseURL); logger.debug("... jockey found : " + horseJockey); WebPage horseWebPage = this.horseParser.parse(new URL(horseURL)); // look in detailed statistics to get values corresponding to // the horseName Finish finish = new Finish(-1, cote, horseJockey, horseTrainer, horseWebPage); finish.setPeriod(period); finish.setDistance(distance); fl.getFinishes().add(finish); } catch (Exception e) { logger.error(e); } ((WpDetailsTurfo) wp).setFinishList(fl); } wp.addPronostic(name, period, distance); } logger.debug("... set prediction"); try { wp.setPrediction(getPrediction(doc)); } catch (Exception e) { logger.error("... no prediction found"); logger.error(e); } return wp; }