我通过WebDriver(Chrome(从网页下载图像
// STEP 1
$driver->get($link);
// STEP 2
$els=$driver->findElements(WebDriverWebDriverBy::tagName('img'));
foreach ($els as $el) {
$src=$el->getAttribute('src');
$image=file_get_contents($src);
file_put_contents("image.jpg",$image);
}
虽然浏览器已经加载了图像,但我需要在 STEP 2 中再次下载图像。
我可以通过在浏览器中right-click
来保存 STEP 1 之后的图像,并在没有互联网连接的情况下Save image as ...
,因为这些图像在浏览器的本地缓存中可用。
是否可以使用网络驱动程序保存Chrome加载的图像而无需再次下载?
上面的代码是PHP
,但是其他编程语言中的任何命中或示例代码都可以解决问题。
下面的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(。