使用Selenium和Java从网站上抓取数据

问题描述 投票:0回答:1

我正在尝试从cricinfo网站上收集数据,并编写了一种接受播放器名称并显示其相应数据的方法。

[如果您看到此方法,则使用玩家名称并显示其所有数据。

我的要求是为所有玩家显示完整的计分卡,而不是仅显示一名玩家的数据。

URL

https://www.espncricinfo.com/series/8039/scorecard/1144490/india-vs-south-africa-8th-match-icc-cricket-world-cup-2019

方法

public static void displayData(WebDriver driver, String input)
{
    WebElement player = driver.findElement(By.xpath("//a[contains(text(),'"+input+"')]"));
    String player_name = player.getText();

    WebElement bowled_by = driver.findElement(By.xpath("//a[contains(text(),'"+input+"')]//parent::div//following-sibling::div[@class='cell commentary']"));
    String bowled_by_detail = bowled_by.getText();

    List<WebElement> score_card = driver.findElements(By.xpath("//a[contains(text(),'"+input+"')]//parent::div//following-sibling::div[@class='cell runs']"));

    System.out.println(player_name);
    System.out.println(bowled_by_detail);

    for(int i=0;i<score_card.size();i++)
    {
        String values = score_card.get(i).getText();

        System.out.print(values + " | ");
    }System.out.println();
}

方法执行

displayData(driver,“ HM Amla”);

结果

HM Amlac沙玛·布姆拉6 | 9 | 16 | 1 | 0 | 66.66 |

selenium selenium-webdriver
1个回答
0
投票

就像使用Python的BeautifulSoup一样,您可以使用Jsoup

© www.soinside.com 2019 - 2024. All rights reserved.