selenium - 使用 Selenium 和 Java 从网站抓取数据
问题描述
我正在尝试从cricinfo网站上抓取数据,并编写了一个接受玩家姓名并显示其相应数据的方法。
如果您看到此方法获取玩家姓名并显示他的所有数据。
我的要求是显示所有球员的完整记分卡,而不是只显示一名球员的数据。
网址
方法
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();
}
方法执行
显示数据(驱动程序,“HM Amla”);
结果
HM Amla c Sharma b Bumrah 6 | 9 | 16 | 1 | 0 | 66.66 |
解决方案
就像 python 中的 BeautifulSoup 一样,您可以使用Jsoup使用 java 进行网络抓取,它非常快,您可以根据需要使用 css 选择器检索数据。
我们需要使用具有数据的 selenium 遍历元素块,然后将 outerhtml 传递给 jsoup 以进一步抓取数据。
推荐阅读
- php - Can't access Phpmyadmin in ubuntu error mysqli_real_connect(): (HY000/2002)
- python - 有没有办法从 anaconda 发行版中卸载 VScode,然后重新安装它作为“新的开始”?
- python-3.x - 如何将 drake 的优化工具箱与 mujoco-py 模拟器结合起来?
- ios - 场景委托不更新视图控制器
- string - 如何在flutter中从json字符串创建列表
- postgresql - knex(postgres)引用另一个表中的列(不是唯一的)
- python - 如何从 Django 中的 2 个不同模型中获取数据
- python - Django:根据 URL slug 查询两个表
- python - TensorFlow Github 存储库中定义的 Softmax 函数
- javascript - 线程“main”中的异常 java.lang.NullPointerException 如何检查来自另一个类(Java 对象和类)的客户