我正在尝试从whoscored.com网站上抓取一些数据。 (https://www.whoscored.com/Regions/81/Tournaments/6/Seasons/7406/Stages/16428/PlayerStatistics/Germany-Bundesliga-II-2018-2019)
我单击详细选项卡,然后按分钟对德国第二个德甲联赛的球员进行排序。问题是,在单击这些选项卡之后,似乎成功获取了新表(代码的第一框)
celtext仍然为我提供了初始表的值,即单击“分钟和详细信息”选项卡之前的值。 (第二段代码)
如何检索取回Celtext时获得更新的信息?
想要的输出:
实际输出:
非常感谢您的所有帮助!
尝试过的解决方案
我已经尝试将线程设置为在每次单击表后进入休眠状态8秒钟,但这不会影响结果。我知道这可能与元素未完全加载或单击不会导致影响数据的“硬单击”有关。但是,页面确实更改为我希望它位于的表。
代码
WebElement detail = driver.findElement(By.xpath("//*[@id=\"detailed-statistics-tab\"]/a")); // selects detailed tab in stats
ex.executeScript("arguments[0].click();", detail);
int ok_size1=driver.findElements(By.xpath("//*[@id=\"player-table-statistics-head\"]/tr/th[5]")).size(); // sorts by mins
driver.findElements(By.xpath("//*[@id=\"player-table-statistics-head\"]/tr/th[5]")).get(ok_size1-1).click();
WebElement theTable = driver.findElement(By.xpath("//*[@id=\"player-table-statistics-body\"]"));
List < WebElement > rows_table = theTable.findElements(By.tagName("tr"));
rows_count = rows_table.size();
for (int row = 0; row < rows_count; row++) {
List < WebElement > Columns_row = rows_table.get(row).findElements(By.tagName("td"));
int columns_count = Columns_row.size();
for (int column = 0; column < columns_count; column++) {
String celtext = Columns_row.get(column).getAttribute("innerHTML");
期望Daniel Heur Fernandes的输出,但获得Philipp Clement
答案 0 :(得分:0)
问题是要在表中查找带有标签名的元素。 而是尝试以下解决方案以获取具有播放器链接的行元素列表,
List<WebElement> players = driver.findElements(By.xpath("//*[@id='statistics-table-detailed']//tr//a[@class='player-link']"));
for(WebElement player:players)
{
System.out.println(player.getText());
}