Ler página web com Java

Quero fazer um programinha que leia os resultados dos jogos do campeonato espanhol, que são fornecidos por este site:

http://www.livescore.com/default.dll?page=spain

e transforme isso em um webService para ser acessado por outros clientes.

Qual a melhor maneira de ler os resultados deste site?
Que APIs eu uso, etc…?

Tem o HttpClient.
http://jakarta.apache.org/commons/httpclient/
Tutorial aqui http://jakarta.apache.org/commons/httpclient/tutorial.html

O dificil é que vc vai ter que ler os resultados direto do html, que pode não ser tão trivial, e rezar para eles não aterarem o layout :slight_smile:

valeu!
Pensando bem, não vai ser fácil ler o html mesmo.

Alguém sabe de um site que forneça este serviço em xml, algo assim?

Alguem sabe dizer se existe alguma biblioteca nativa do java que faça isso? ao invéz de usar uma api externa.
Preciso ler o conteudo de uma pagina, já fiz a conexão agora falta a parte mais dificil que é fazer uma busca no codigo da pagina.

Olá!

Dê uma olhada na classe java.net.URL e o seu método openStream(). A partir daí é possível conectar em uma URL e recuperar o seu conteúdo para fazer o processamento.

Abraço!

1 curtida

Olá…
Segui o conselho e vi a classe java e usei o opeStream, porem estou enfrentando um problema que não estou conseguindo solucionar. A aplicação que estou fazendo até agora possui 3 classe, uma com a parte de manipulação de XML, a classe de conexão e a classe que vai ler o conteudo do codigo da pagina web para que eu possa fazer um search buscando os trechos que preciso.
Ao executar a metodo de conexao ele retorna a msg 200 informando que tive sucesso na conexão porem ao chamar o metodo para ler a pagina Web retorna o erro 401(acesso negado).
Alguem sabe me informar o motivo de ter acesso negado se estou chamando o metodo de leitura da pagina web dentro do proprio metodo da conexao. acredito que a conexao esteja aberta ainda…

OBS: O erro ocorre na linha 16,

Fiz um teste colocando um pagina fixa no trecho onde especifica a url e consegui, entao isso me confirma que o codigo reader esta lendo a pagina…entao a Duvida fica pq nao consigo acessar a pagina que eu quero?

public class GetConnection {
	

	private XmlReader _xml;
	
	public GetConnection(XmlReader xml){
		_xml = xml;
	}	
	
	PageReader pr;
	
	public void getConnection(){
	   try {
	         // cria o objeto url 
	          	URL url = new URL(_xml.getServerlist().getServer().get(0).getUrl());
	          	
	          	// cria o objeto httpurlconnection e manipula paramentros da co
	          	HttpURLConnection cn = (HttpURLConnection) url.openConnection();
	          	
	          	//Criptograda senha e usuario para enviar para a pagina
	          	String userPassword = _xml.getServerlist().getCredential().getLogin() + 
	          	                      ":" + _xml.getServerlist().getCredential().getPassword();
	          	String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());
	          	cn.setRequestProperty ("Authorization", "Basic " + encoding);

	            
              System.out.println("Resultado: "+ cn.getResponseCode() + "/" + cn.getResponseMessage());
              
              pr = new PageReader(_xml);
              pr.pageReader();
              
		   } catch (Exception e) {
             e.printStackTrace();		
	        }
	}
}

public class PageReader {
	
	private XmlReader _url;
	
	public PageReader(XmlReader url){
		_url = url;		
		
	}
	
	public void pageReader(){
		
		try {
			
			String urltext = "http://5.16.40.47:6060/apache";
			URL url = new URL(_url.getServerlist().getServer().get(0).getUrl());
			BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
			String inputLine;

			while ((inputLine = in.readLine()) != null) {
				// Process each line.
				System.out.println(inputLine);
			}
			in.close();		
			
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}

}

Acredito ter encontrado o erro, porém não sei como solucionar. Muito provavelmente o erro esteja na linha abaixo pois em nenhum lugar ela esta vinculando com a conexao criada, entao ao tentar ler o conteudo da pagina ele da problema por falta de acesso. Entao eu gostaria de saber se alguem sabe me dizer Como faço para passar para meu openStream os parametros da minha conexao?

 
             BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));