Olá. Neste tópico eu gostaria de saber se alguém aqui conhece alguma maneira de pegar uma imagem aleatória da internet sobre determinado assunto. Eu vi alguns exemplos na internet, aparentemente é possível, mas aí vem o problema, o tal do “aleatório”. Alguém tem alguma ideia de como fazer isso?
Já deu uma olhada na API de busca do Google?
Sim. Também encontrei vários exemplos como esse e esse, porém não é o que eu quero. Eu quero somente pegar uma imagem aleatória da internet sobre algum assunto. Gostaria de saber se há uma solução mais simples.
Mais simples que a solução empregada pelo google?
Difícil.
A não ser que a questão seja apenas encontrar uma imagem (arquivos com extensões como .jpg, .gif, .png, .ico, etc) e cujo nome contenha uma palavra ou expressão (onde palavra é qualquer conjunto com um ou mais caracteres e expressão é um conjunto qualquer de uma ou mais palavras).
Cara, eu só quero pegar uma imagem dos resultados, realmente, vou usar o Google, só que eu não encontrei nenhum exemplo “aleatório”, bem, eu posso pegar um array de uma determinada quantidade a partir dos resultados e sortear uma posição dele, porém eu não encontrei nenhum exemplo especifico sobre imagens.
Dá pra fazer com HttpURLConnection, ai você usa alguma lib para o parse do html.
Não conseguiria me dar um exemplo? Pode ser com qualquer site, depois eu adapto.
public static void main(String[] args) {
String busca = new String("https://www.google.com.br/search?site=imghp&tbm=isch&source=hp&q=");
String imagem = new String("cachorro");
URL url = null;
try {
url = new URL(busca+imagem);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("user-agent", "Mozilla/5.0");
BufferedReader bR = new BufferedReader(new InputStreamReader(con.getInputStream()));
System.out.println(bR.readLine());
bR.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Na real é que você vai ter dar uma olhada no HTML que retorna e descobrir como os endereços das imagens são formados, pelo que vi tem um javascript ali misturado.
Parse: https://jsoup.org/
Eu analisei o retorno, realmente, retornam imagens junto, porém eu não estou conseguindo pegar com o JSoup, o print retorna vazio:
BufferedReader bR = new BufferedReader(new InputStreamReader(con.getInputStream()));
String page = bR.readLine();
Document document = Jsoup.parse(page);
Element image = document.select("img").first();
String src = image.absUrl("src");
System.out.println(src);
Sem querer ser chato, não é melhor aprender Java e depois tentar fazer alguma coisa? Senão toda vez que você precisar de algo vai postar aqui?
A API ta funcionando perfeitamente aqui…
Uma das imagens que ele listou do google:
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQjRNuXFGxokNzgPkVU-MweX9e2OyNw2LX0gZdmofO9_BPxaKpVv4NiPI6M
Tem de reformatar o código… mas ta funcionando.
Se quase 2 anos programando na linguagem, e tu não pode considerar que tu “sabe” ela, quando seria?[quote=“JulioCesarSF, post:10, topic:343800”]
Senão toda vez que você precisar de algo vai postar aqui?
[/quote]
Se notar que eu estou criando muitos tópicos aqui, é porque eu fiquei offline por vários dias, e fui criando uma lista de problemas no meu projeto que não pude resolver pela falta de internet, nada mais, e eu tento o máximo possível criar tópicos interessantes, caso eu criei muitos, apenas ignore-os.
Mas, muito obrigado pela dica, meu código ficou assim:
BufferedReader bR = new BufferedReader(new InputStreamReader(con.getInputStream()));
String page = bR.readLine();
Document document = Jsoup.parse(page, "UTF-8");
for(Element image : document.select("img")){
String src = image.attr("src");
System.out.println(src);
}
Ainda tem um problema, as imagens estão menores do que o tamanho original, mas se não pode explicar, tudo bem, valeu pela ajuda.
eu estou tentado fazer a mesma coisa, eu usei os códigos mas ele sempre me retorna a mesma coisa:
this.UrlImagem = "https://www.google.com.br/search?site=imghp&tbm=isch&source=hp&q="+"lua";
try {
Document document = Jsoup.connect(UrlImagem).get();
this.paginaImagem = document;
} catch (IOException ex) {
Logger.getLogger(Busca.class.getName()).log(Level.SEVERE, null, ex);
}
for(Element image : paginaImagem.select("img")){
String src = image.attr("src");
System.out.println(src);
}
ele me retorna isso:
/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png
/tia/tia.png
data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0Mjg1RjQiIGQ9Ik0xOSAyMmgtN3YtMmg3Yy41NSAwIDEtLjQ2IDEtMVY1YTEgMSAwIDAgMC0xLS45OUwxMiA0VjJoN2MxLjY2IDAgMyAxLjM2IDMgM3YxNGMwIDEuNjUtMS4zNSAzLTMgMyIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBmaWxsPSIjRUE0MzM1IiBkPSJNMTIgMjJINWMtMS42NCAwLTMtMS4zNi0zLTNWNWMwLTEuNjQgMS4zNi0zIDMtM2g3djJINWMtLjU1IDAtLjk5LjQ1LS45OSAxTDQgMTljMCAuNTUuNDUgMSAxIDFoN3YyeiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBmaWxsPSIjMzRBODUzIiBkPSJNMTQgMTNsLTIuMjUgMi43NUwxMCAxNGwtNCA0aDEyeiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBmaWxsPSIjRkJCQzA0IiBkPSJNMTAgOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJjMC0xLjA5LjktMiAyLTJzMiAuOSAyIDIiLz48L3N2Zz4K
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
seguido por um monte de espaço, oque eu posso fazer?