如果我没有以正确的方式发布内容,请原谅我,因为这是我在网站上发布的第一篇文章。我目前正在为我的学校制作一个爬虫(在java中),在pinterest访问某个页面并“重复”其上的所有照片。我目前正在使用Selenium对此进行编码,但我遇到了重复问题。我知道如何编程打开某个图像并重新打印它,但我如何为其他图片做同样的事情呢?我必须为各种pinterest页面执行此操作,每页都有可变数量的图片。这是我现在的相关代码:
public static void GetPageInfo(WebDriver driver) throws AWTException, InterruptedException {
driver.get("https://www.pinterest.com/kachance33/school-psych/");
Thread.sleep(2000);
driver.findElement(By.xpath("//div[2]/div/div/div[2]/div[3]/a/div[2]/div/div
")). click();
Thread.sleep(3000);
driver.findElement(By.xpath("(//button[@type='button'])[23]")).click();
driver.findElement(By.xpath("(//button[@type='button'])[59]")).click();
}
为了帮助简化我的问题,这里是:
答案 0 :(得分:1)
基本思想是使用带有xpath或css选择器的driver.findElements()映射到图片列表(以WebElements的形式),并迭代它们。
即
List<WebElement> pictures = driver.findElements(By.cssSelector(".GridItems .item"));
for (WebElement picture : pictures) {
// code to pin the picture
}
使用driver.findElements()也可以消除问题#3中的问题,因为该方法不会引发异常。如果没有找到图片,它只会返回一个空列表。