在博彩网站上抽取队伍只能使我限制为13个队伍

时间:2018-11-13 04:09:42

标签: java selenium-webdriver web-scraping

我要从中提取数据的betIn网站是betIn。我已导航至该部分,其中包括当日当前将参加比赛的所有球队的列表,我正尝试提取有关团队,但我目前只能获得13个团队,而不是所有团队。起初,我认为将值存储在Array中是问题,因此我选择移至ArrayList,但仍然遇到相同的问题,下面是我的代码:

public class test {

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "/Users/user/Desktop/chromedriver");

    WebDriver driver = new ChromeDriver();driver.navigate().to("https://sports.betin.co.ke/mobile#/dailyBundle/soccer/1-1000");
    List<WebElement> rows = driver.findElements(By.cssSelector(".match-content.table-a.soccer"));
    java.util.Iterator<WebElement> row_list = rows.iterator();
    ArrayList<String> teams = new ArrayList<>();
    ArrayList<String> bets = new ArrayList<>();
    while(row_list.hasNext()){
        WebElement rowItem = row_list.next();
        String unnecessary = rowItem.findElement(By.cssSelector(".match-content__row--info")).getText();
        String Content = rowItem.findElement(By.cssSelector(".match-content__info")).getText();
        String relevantContent = Content.replace(unnecessary,"");
        String bet = rowItem.findElement(By.cssSelector(".bets")).getText();
        teams.add(relevantContent);
        bets.add(bet);
    }
    System.out.println("These are the teams \n"+ teams);

    System.out.println("The size of teams is "+ teams.size());

    System.out.println("These are the odds \n"+ bets);
    driver.close();

}

}

1 个答案:

答案 0 :(得分:1)

您是否注意到rows.size()始终显示为零。

这是因为页面未完全加载,但是您的代码正在执行。

如果我通过稍等片刻运行您的代码,则效果很好。我能够得到所有队伍。

Thread.sleep(10000) // wait for 10 seconds
List<WebElement> rows = testDriver.findElements(By.cssSelector(".match-content.table-a.soccer")); 

在代码之间使用sleep是不明智的。因此,要确保您的页面已完全加载,请检查Selenium - How to wait until page is completely loaded