gpt4 book ai didi

java - 当 url 不变时,使用 Java Selenium 跨多个页面抓取数据

转载 作者:太空宇宙 更新时间:2023-11-04 10:56:08 25 4
gpt4 key购买 nike

enter image description here我一直在尝试编写一个简单的代码来从 www.whoscored.com 获取一些基本统计数据。我的代码循环遍历第一页链接并抓取数据,但当我使用 driver.findElement(By.xpath("")).click(); 切换时到下一个表,它从第一个游戏收集数据,但然后在第一个表/页面上再次循环/返回...

这是代码:

package Whoscored;

import java.io.File;


public class Datascrape {

public static void main(String[] args) throws InterruptedException,
IOException {


WebDriver driver = new FirefoxDriver();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS)

// get the URL
driver.get("https://www.whoscored.com/Regions/81/Tournaments/6/Seasons/6393/Germany-Bundesliga-II");

Thread.sleep(1000);
driver.manage().window().maximize();

// first loop to identify matches-list over and over again

for (int w=0;w<=100;w++){

List<WebElement> lista1 =
driver.findElements(By.cssSelector(".match-link.match-report.rc"));

// second loop for each table

for (int j=0;j<=lista1.size(); j++){
lista1.get(j).click();
driver.manage().window().maximize();


// go deeper (two clicks), grab stats and return to original position/table

// clicks
driver.findElement(By.xpath(".//*[@id='sub-
navigation']/ul/li[4]/a")).click();
driver.findElement(By.xpath(".//*[@id='live-match-
options']/li[3]")).click();

// grab stats/text
String home6 = driver.findElement(By.xpath(".//*
[@id='chalkboard']/div[2]/div[1]/div[3]/div[2]/span[1]")).getText();
String away6 = driver.findElement(By.xpath(".//*
[@id='chalkboard']/div[2]/div[1]/div[3]/div[2]/span[2]")).getText();

driver.navigate().back();
Thread.sleep(5000);
driver.navigate().back();
Thread.sleep(5000);
lista1= driver.findElements(By.cssSelector(".match-link.match-
report.rc"));

}
// after it finishes with first table go to second table with click

driver.findElement(By.xpath(".//*[@id='date-
controller']/a[1]/span")).click();
Thread.sleep(5000);
}
}
}

最佳答案

在阅读文档之前,您必须确保数据已加载。例如你的来电

driver.findElement(By.xpath(".//*[@id='date-controller']a[1]/span")).click();

很好,但你还需要确保下一个兄弟

driver.findElement(By.xpath(".//*[@id='date-controller']a[2]/span"))

已更改其值,例如初始范围包含“2017 年 1 月 23 - 29 日”,onclick 应更改为“2016 年 12 月 19 - 25 日”

关于java - 当 url 不变时,使用 Java Selenium 跨多个页面抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47312386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com