【发布时间】:2022-01-16 20:54:27
【问题描述】:
我正在尝试使用 Java (IDE IntelliJ) 从 Internet 导入图像,但我不知道如何从谷歌图像中选择图像(在本例中为第一行)。 例如,我试图搜索罗马和那不勒斯的首都,但代码无法从图像 google 的部分中找到任何图像。
可能你对我说的不太了解,所以下面你会发现我写的代码有相对错误
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main{
public static void main(String[] args) {
String[] listaCapitali = {
"Roma",
"Napoli",
};
for (String capitale : listaCapitali) {
ricercaGoogle("https://www.google.com/search?q=" + capitale + "+cartina&source=lnms&tbm=isch&sa=X&ved=2ahUKEwj-moK1y-D0AhXIzaQKHeXUBLUQ_AUoAXoECAEQAw&cshid=1639392166213289&biw=2240&bih=1082&dpr=2");
}
}
private static void ricercaGoogle(String urlPath) {
try {
URL url = new URL(urlPath);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int response = connection.getResponseCode();
System.out.println(response);
BufferedImage image = ImageIO.read(url);
FileOutputStream fos = new FileOutputStream(String.valueOf(image));
fos.write(response);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
错误提示:
403
javax.imageio.IIOException: Can't read input file!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308)
at Main.ricercaGoogle(Main.java:33)
at Main.main(Main.java:19)
403
javax.imageio.IIOException: Can't read input file!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308)
at Main.ricercaGoogle(Main.java:33)
at Main.main(Main.java:19)
你能帮我把这些图片下载到我的电脑上,用大写的名字命名吗?非常感谢
【问题讨论】:
-
首先,403(禁止)响应代码表示您尝试执行 Goggle 不允许您执行的操作。不确定他们的条款是否允许抓取。其次,当您在 Internet 上搜索时,通常会返回 HTML。您需要解析该 HTML 以获取图像的 URL。最后,当您拥有图像 URL 时,只需将图像文件直接下载并写入磁盘,无需对其进行解码(就像
ImageIO.read(..)所做的那样)。
标签: java image url http-status-code-403