[RESOLVIDO] Pegar dados de site
Olá gostaria de saber como faço para fazer pesquisar ou pegar dados de site atraves do java, por exemplo, usuario pedir a previsao do tempo de tal cidade e de alguma forma o programa pegar os dados de algum site e mostrar para o usuario(apenas a previsao do tempo da cidade) ou fazer pesquisas na internet tipo wikipedia usuario digitar o que deseja e o programa imprimir o resultado a pesquisa(o texto).
Pettrus Aquino
Curtidas 1
Respostas
Fabio Rocha
10/04/2013
[quote="Pettrus Sherlock"]Olá gostaria de saber como faço para fazer pesquisar ou pegar dados de site atraves do java, por exemplo, usuario pedir a previsao do tempo de tal cidade e de alguma forma o programa pegar os dados de algum site e mostrar para o usuario(apenas a previsao do tempo da cidade) ou fazer pesquisas na internet tipo wikipedia usuario digitar o que deseja e o programa imprimir o resultado a pesquisa(o texto).
Para buscar e captura de informações você pode construir um web spider, existe um em Java, com código aberto que pode ser util na sua aprendizagem:
[url]http://code.google.com/p/jspider/[/url]
GOSTEI 0
Marcelo Senaga
10/04/2013
Outra alternativa é o JSoup. Muito bom, você consegue detectar qualquer elemento da página: div, label, font, texto, etc e extrair esses dados. Ex:
Obtem todos os div´s do padrão citado. Veja mais exemplos:
http://www.mkyong.com/java/jsoup-html-parser-hello-world-examples/
Elements img = doc.select("div[style=margin-left:130px;]");
for(Element el: img) {
System.out.println("Visualizações = " + el.text());
}
GOSTEI 0
Pettrus Aquino
10/04/2013
[quote="gomesrocha"][quote="Pettrus Sherlock"]Olá gostaria de saber como faço para fazer pesquisar ou pegar dados de site atraves do java, por exemplo, usuario pedir a previsao do tempo de tal cidade e de alguma forma o programa pegar os dados de algum site e mostrar para o usuario(apenas a previsao do tempo da cidade) ou fazer pesquisas na internet tipo wikipedia usuario digitar o que deseja e o programa imprimir o resultado a pesquisa(o texto).
Para buscar e captura de informações você pode construir um web spider, existe um em Java, com código aberto que pode ser util na sua aprendizagem:
[url]http://code.google.com/p/jspider/[/url] GOSTEI 0
Pettrus Aquino
10/04/2013
[quote="ms27817"]Outra alternativa é o JSoup. Muito bom, você consegue detectar qualquer elemento da página: div, label, font, texto, etc e extrair esses dados. Ex:
Obtem todos os div´s do padrão citado. Veja mais exemplos:
http://www.mkyong.com/java/jsoup-html-parser-hello-world-examples/
Muito bom esse link que você me passou marcelo, obrigado!
Elements img = doc.select("div[style=margin-left:130px;]");
for(Element el: img) {
System.out.println("Visualizações = " + el.text());
}
GOSTEI 0
Pettrus Aquino
10/04/2013
Estranho estou tentando implementar o exemplo do link
http://www.mkyong.com/java/jsoup-html-parser-hello-world-examples/
e me é retornado esse erro
java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:769)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:766)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1072)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:429)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:410)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:164)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:153)
at agregadornoticias.teste.HTMLParserExample1.main(HTMLParserExample1.java:23)
GOSTEI 0
Pettrus Aquino
10/04/2013
Tem o Jericho tambem:
http://jericho.htmlparser.net/docs/index.html
GOSTEI 0
Pettrus Aquino
10/04/2013
Faz a mesma coisa? Sabe dizer se tem um melhor do que o outro. E pq vi aqui e achei interessante. Estou tentando realizar o teste do meu trabalho, pode ser que algum firewall esteja me barrando. Valeu.
GOSTEI 0
Pettrus Aquino
10/04/2013
Sim. Faz a mesma coisa!
GOSTEI 0
Krisnamourt Filho
10/04/2013
Acho achei minha resposta. Adicionei o "s" https
e veio a seguinte resposta
Sabe como faço pra ter acesso a sites em ambiente protegidos por firewall na rede como aqui no meu trabalho.
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:808)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1120)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1147)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1131)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:425)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:410)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:164)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:153)
at agregadornoticias.teste.HTMLParserExample1.main(HTMLParserExample1.java:23)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:333)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:789)
... 11 more
GOSTEI 0
Pettrus Aquino
10/04/2013
Achei esse link aqui!
http://stackoverflow.com/questions/7744075/how-to-connect-via-https-using-jsoup
GOSTEI 0
Krisnamourt Filho
10/04/2013
Estranho. Ter q baixar o certificado de cada site.
GOSTEI 0
Krisnamourt Filho
10/04/2013
Consegui
System.setProperty("https.proxyHost", "servidor");
System.setProperty("https.proxyPort", "9999");
GOSTEI 0
Pettrus Aquino
10/04/2013
[quote="krismorte"]Consegui
Nossa, mas seu proxy não pede username/password?
System.setProperty("https.proxyHost", "servidor");
System.setProperty("https.proxyPort", "9999");
GOSTEI 0
Krisnamourt Filho
10/04/2013
Na verdade se sua maquina esta em uma rede privada as maquinas ja estão atentivadas elas tem apenas q passar pelo proxy pra chegar a internet.
GOSTEI 0
Pettrus Aquino
10/04/2013
[quote="krismorte"]Na verdade se sua maquina esta em uma rede privada as maquinas ja estão atentivadas elas tem apenas q passar pelo proxy pra chegar a internet.
nossa, obrigado pela informação!
GOSTEI 0