Java 在博彩网站上抽取团队只会给我13个团队的限制

Java 在博彩网站上抽取团队只会给我13个团队的限制,java,selenium-webdriver,web-scraping,Java,Selenium Webdriver,Web Scraping,我试图从betIn站点中提取数据的是betIn。我已经导航到了一个部分,其中包含了当天将要比赛的所有球队的列表,我试图提取关于这些球队的信息,但我目前只能获得13支球队,而不是所有球队。起初我想将这些值存储在数组是个问题,因此我选择了移动到ArrayList,但仍然存在相同的问题,下面是我的代码: public class test { public static void main(String[] args) { System.setProperty("webdriver.chr

我试图从betIn站点中提取数据的是betIn。我已经导航到了一个部分,其中包含了当天将要比赛的所有球队的列表,我试图提取关于这些球队的信息,但我目前只能获得13支球队,而不是所有球队。起初我想将这些值存储在数组是个问题,因此我选择了移动到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();

}
公共类测试{
公共静态void main(字符串[]args){
System.setProperty(“webdriver.chrome.driver”,“/Users/user/Desktop/chromedriver”);
WebDriver driver=new ChromeDriver();driver.navigate()。指向(“https://sports.betin.co.ke/mobile#/dailyBundle/soccer/1-1000");
列表行=driver.findElements(By.cssSelector(“.match content.table-a.soccer”);
java.util.Iterator row_list=rows.Iterator();
ArrayList团队=新建ArrayList();
ArrayList bets=新的ArrayList();
while(row_list.hasNext()){
WebElement rowItem=行列表。下一步();
字符串不必要=rowItem.findelelement(By.cssSelector(“.match-content\uuu row--info”)).getText();
String Content=rowItem.findelelement(By.cssSelector(“.match-Content\uu info”)).getText();
字符串relevantContent=Content.replace(不需要“”);
String bet=rowItem.findelelement(By.cssSelector(“.bets”)).getText();
添加(相关内容);
下注。添加(下注);
}
System.out.println(“这些是团队\n”+团队);
System.out.println(“团队大小为”+teams.size());
System.out.println(“这些是赔率\n”+赌注);
driver.close();
}

}

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

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

如果我通过应用一些wait来运行您的代码,那么它工作得非常好。我可以得到所有的球队

Thread.sleep(10000) // wait for 10 seconds
List<WebElement> rows = testDriver.findElements(By.cssSelector(".match-content.table-a.soccer")); 
Thread.sleep(10000)//等待10秒
列表行=testDriver.findElements(By.cssSelector(“.match content.table-a.soccer”);
在代码之间使用
sleep
不是明智之举。因此,要确保页面已完全加载,请检查此项