Sfoglia il codice sorgente

New Oddsportal parsing

Axel Nordh 3 anni fa
parent
commit
aea4faf9b0
2 ha cambiato i file con 48 aggiunte e 64 eliminazioni
  1. 1 0
      Odds/src/main/Main.java
  2. 47 64
      Odds/src/parser/OddsPortal.java

+ 1 - 0
Odds/src/main/Main.java

@@ -1,4 +1,5 @@
 package main;
 package main;
+
 import java.io.BufferedReader;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.InputStreamReader;

+ 47 - 64
Odds/src/parser/OddsPortal.java

@@ -251,6 +251,8 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
 
 
                     setTeamsInfo(result, firstResultsDiv);
                     setTeamsInfo(result, firstResultsDiv);
 
 
+                    setScoring(result, firstResultsDiv);
+
                     setOdds(result, firstResultsDiv);
                     setOdds(result, firstResultsDiv);
 
 
                 } else if (subDivs.size() == 1) {
                 } else if (subDivs.size() == 1) {
@@ -262,6 +264,8 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
                     setGameDate(result, firstResultsDiv);
                     setGameDate(result, firstResultsDiv);
                     setTeamsInfo(result, firstResultsDiv);
                     setTeamsInfo(result, firstResultsDiv);
 
 
+                    setScoring(result, firstResultsDiv);
+
                     setOdds(result, firstResultsDiv);
                     setOdds(result, firstResultsDiv);
                 } else {
                 } else {
                     somethingWrong = true;
                     somethingWrong = true;
@@ -301,6 +305,27 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
         driver.quit();
         driver.quit();
     }
     }
 
 
+    private List<WebElement> scrollAndGetAllMatchDivs(ChromeDriver driver, List<WebElement> divs, int divsCount)
+            throws InterruptedException {
+        if (divsCount > 0) {
+            scrollElementIntoViewCenter(driver, divs.get(divsCount - 1));
+            Thread.sleep(2000);
+            divs = driver
+                    .findElements(By.xpath(DIV_CONTAINS_CLASS_TABS_DIV_NOT_CLASS_DIV_1_DIV));
+        }
+
+        while (divsCount < divs.size()) {
+            if (divsCount > 0) {
+                divsCount = divs.size();
+                scrollElementIntoViewCenter(driver, divs.get(divsCount - 1));
+                Thread.sleep(2000);
+                divs = driver
+                        .findElements(By.xpath(DIV_CONTAINS_CLASS_TABS_DIV_NOT_CLASS_DIV_1_DIV));
+            }
+        }
+        return divs;
+    }
+
     /*
     /*
      * Behöver göras om till Selenium
      * Behöver göras om till Selenium
      * private void parseTournamentTable(int sportId, int countryId, int leagueId,
      * private void parseTournamentTable(int sportId, int countryId, int leagueId,
@@ -403,27 +428,6 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
      * }
      * }
      */
      */
 
 
-    private List<WebElement> scrollAndGetAllMatchDivs(ChromeDriver driver, List<WebElement> divs, int divsCount)
-            throws InterruptedException {
-        if (divsCount > 0) {
-            scrollElementIntoViewCenter(driver, divs.get(divsCount - 1));
-            Thread.sleep(2000);
-            divs = driver
-                    .findElements(By.xpath(DIV_CONTAINS_CLASS_TABS_DIV_NOT_CLASS_DIV_1_DIV));
-        }
-
-        while (divsCount < divs.size()) {
-            if (divsCount > 0) {
-                divsCount = divs.size();
-                scrollElementIntoViewCenter(driver, divs.get(divsCount - 1));
-                Thread.sleep(2000);
-                divs = driver
-                        .findElements(By.xpath(DIV_CONTAINS_CLASS_TABS_DIV_NOT_CLASS_DIV_1_DIV));
-            }
-        }
-        return divs;
-    }
-
     private void setGameDate(ResultDTO result, WebElement firstResultsDiv) {
     private void setGameDate(ResultDTO result, WebElement firstResultsDiv) {
         final List<Integer> time = new ArrayList<>();
         final List<Integer> time = new ArrayList<>();
         if (checkIfElementExists(firstResultsDiv, "./div/a/div[1]/div/p")) {
         if (checkIfElementExists(firstResultsDiv, "./div/a/div[1]/div/p")) {
@@ -448,54 +452,33 @@ public class OddsPortal extends ParserBase implements ParserJoinedFunctions {
     }
     }
 
 
     private void setOdds(ResultDTO result, WebElement firstResultsDiv) {
     private void setOdds(ResultDTO result, WebElement firstResultsDiv) {
-        final int addToOddsDivPosition;
-        if (checkIfElementExists(firstResultsDiv, "./div/div[1]/div")) {
-            String resultsText = firstResultsDiv.findElement(By.xpath("./div/div[1]/div")).getText();
+        List<WebElement> oddsDivs = firstResultsDiv.findElements(By.xpath("./div/div"));
 
 
-            String[] results = resultsText.split(":");
+        try {
+            result.setOdds1(Float.parseFloat(oddsDivs.get(0).getText().toString()));
+            result.setOddsX(Float.parseFloat(oddsDivs.get(1).getText().toString()));
+            result.setOdds2(Float.parseFloat(oddsDivs.get(2).getText().toString()));
+        } catch (NumberFormatException e) {
+            System.out.println(
+                    "failed to parse odds " + oddsDivs.get(0).getText() + ", " + oddsDivs.get(1).getText() + ", "
+                            + oddsDivs.get(2).getText());
+        } catch (IndexOutOfBoundsException e) {
+            System.out.println(result);
+        }
+
+    }
+
+    private void setScoring(ResultDTO result, WebElement firstResultsDiv) {
+        if (checkIfElementExists(firstResultsDiv, "./div/a/div[2]/div/div/div/div/div")) {
+            List<WebElement> scoringDivs = firstResultsDiv.findElements(By.xpath("./div/a/div[2]/div/div/div/div/div"));
+            try {
+                result.setHomeScore(Integer.parseInt(scoringDivs.get(0).getText()));
+                result.setAwayScore(Integer.parseInt(scoringDivs.get(2).getText()));
+            } catch (NumberFormatException e) {
 
 
-            if (results.length == 2) {
-                result.setHomeScore(Integer.parseInt(results[0]));
-                if (!results[1].matches("[0-9]*")) {
-                    result.setOvertime(true);
-                    result.setAwayScore(Integer.parseInt(results[1].replaceAll("[^0-9]", "")));
-                } else {
-                    result.setAwayScore(Integer.parseInt(results[1]));
-                }
-                addToOddsDivPosition = 1;
-            } else {
-                addToOddsDivPosition = 0;
             }
             }
-        } else {
-            addToOddsDivPosition = 0;
         }
         }
 
 
-        String divStartString = "./div/div[";
-        String divEndString = "]/div/span/p";
-        if (checkIfElementExists(firstResultsDiv,
-                divStartString + (1 + addToOddsDivPosition) + divEndString)) {
-            result.setOdds1(formatFloat(
-                    firstResultsDiv
-                            .findElement(
-                                    By.xpath(divStartString + (1 + addToOddsDivPosition) + divEndString))
-                            .getText().trim()));
-        }
-        if (checkIfElementExists(firstResultsDiv,
-                divStartString + (2 + addToOddsDivPosition) + divEndString)) {
-            result.setOddsX(formatFloat(
-                    firstResultsDiv
-                            .findElement(
-                                    By.xpath(divStartString + (2 + addToOddsDivPosition) + divEndString))
-                            .getText().trim()));
-        }
-        if (checkIfElementExists(firstResultsDiv,
-                divStartString + (3 + addToOddsDivPosition) + divEndString)) {
-            result.setOdds2(formatFloat(
-                    firstResultsDiv
-                            .findElement(
-                                    By.xpath(divStartString + (3 + addToOddsDivPosition) + divEndString))
-                            .getText().trim()));
-        }
     }
     }
 
 
     private void setTeamsInfo(ResultDTO result, WebElement firstResultsDiv) {
     private void setTeamsInfo(ResultDTO result, WebElement firstResultsDiv) {