我正在尝试从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();
}
}
最佳答案
您是否注意到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关于java - 在博彩网站上抽取队伍只能让我限制13个队伍,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53273671/