2

我通过 WebDriver (Chrome) 从网页下载图像

// STEP 1
$driver->get($link);

// STEP 2
$els=$driver->findElements(WebDriver\WebDriverBy::tagName('img'));

foreach ($els as $el) {
$src=$el->getAttribute('src');
$image=file_get_contents($src);
file_put_contents("image.jpg",$image);
}

虽然浏览器已经加载了图像,但我需要在步骤 2 中再次下载图像。

我可以在第 1 步之后right-click在浏览器中保存图像,并且Save image as ...无需 Internet 连接,因为图像在浏览器的本地缓存中可用。

是否可以使用 WebDriver保存Chrome加载的图像而无需再次下载?

上面的代码是PHP,但是任何其他编程语言的命中或示例代码都可以解决这个问题。

4

1 回答 1

2

下面的 java 代码将下载图像(或任何文件)到您想要的目录中。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;

public class imageDownload{

       public static void main(String[] args) throws IOException {
              URL img_url = new URL("image URL here");
              String fileName = img_url.getFile();
              String destName = "C:/DOWNLOAD/DIRECTORY" + fileName.substring(fileName.lastIndexOf("/"));

              InputStream is = img_url.openStream();
              OutputStream os = new FileOutputStream(destName);

              byte[] b = new byte[2048];
              int length;

              while ((length = is.read(b)) != -1) {
                     os.write(b, 0, length);
              }

              is.close();
              os.close();
       }
}

首先,图像的所有字节流将存储在对象“is”中,并且此字节流将被重定向到 OutputStream 对象 os 以创建文件(一种复制粘贴,但作为 0 和 1)。

于 2020-06-03T18:00:42.150 回答