Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luiz Henrique Cota

Pegar dados de outro site

Recommended Posts

Pessoal,

 

Gostaria de pegar alguns dados de um site público. Gostaria de saber como posso fazer. O site é: http://siteempresas.bovespa.com.br/consbov...&QtLinks=10

depois de entrar no site é preciso clicar em ITR depois em consultar. Neste momento é aberta a pagina da emprsa no caso a VALE, neste momento o site guarda em sessão alguns dados de identificação da empresa. Após entrar na empresa é preciso clicar no 3 botão (Grupo 2 - Balanço patrimonio) neste momento o site pega as informações da seção e exibe os dados do balanço da empresa.

 

Gostaria de pegar esses dados do Balanço. Acredito que o grande problema é a sessão, uma vez que para chegar no balanço é preciso abrir o diretorio da empresa para que a sessão seja preenchida.

 

Alguém tem alguma ideia de como pode ser feito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

 

Fiz um teste e consegui acessar o site com os dados da empresa, porém precisa acessar a tela com o balanço. Como havia dito, ao abrir a tela da empresa gera uma sessão que serva para abrir a tela do balanço.

 

Codigo que abre a tela da empresa

 

$ch = curl_init();

$url = "http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=GERDAU%20S.A.&pregao=GERDAU&ccvm=3980&data=31/03/2009&tipo=4";'>http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=GERDAU%20S.A.&pregao=GERDAU&ccvm=3980&data=31/03/2009&tipo=4";

 

curl_setopt($ch, CURLOPT_URL,

 

"http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=GERDAU%20S.A.&pregao=GERDAU&ccvm=3980&data=31/03/2009&tipo=4");

curl_setopt($ch, CURLOPT_URL, $url);

$page = curl_exec($ch);

 

 

Codigo que tentei fazer para abrir os dois, porém deu erro

 

 

$ch = curl_init();

$url = "http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=GERDAU%20S.A.&pregao=GERDAU&ccvm=3980&data=31/03/2009&tipo=4";'>http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=GERDAU%20S.A.&pregao=GERDAU&ccvm=3980&data=31/03/2009&tipo=4";

$url1 = "http://www.bovespa.com.br/dxw/FormDetalheDXWBalanco.asp?TipoInfo=C&Tipo=01 - Ativo";

 

 

curl_setopt($ch, CURLOPT_URL,

 

"http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=GERDAU%20S.A.&pregao=GERDAU&ccvm=3980&data=31/03/2009&tipo=4");

curl_setopt($ch, CURLOPT_URL, $url);

$page = curl_exec($ch);

 

 

 

 

curl_setopt1($ch, CURLOPT_URL,

 

"http://www.bovespa.com.br/dxw/FormDetalheDXWBalanco.asp?TipoInfo=C&Tipo=01 - Ativo");

curl_setopt1($ch, CURLOPT_URL, $url1);

$page1 = curl_exec($ch);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sockets ou CURL na url que quer pegar os conteudos e já era.

Não tem como 'clicar em botãozinho' não...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente, troque

 

curl_setopt1($ch, CURLOPT_URL, $url1);

 

para

 

curl_setopt($ch, CURLOPT_URL, $url1);

 

agora me diz, esta sessao vem de que jeito, por url ou por cookie?

Compartilhar este post


Link para o post
Compartilhar em outros sites

por Cookie, porém ele fica criptografado.

 

Se puder me dar uma ajuda vai ser muito bom ! Entre na pagina

 

http://www.bovespa.com.br/dxw/FrDXW.asp?si...2009&tipo=4

 

Ao abrir já é gerado um cookie. Nesta pagina clique no 3 botão - Grupo 2 - Balanço patrimonial. Preciso pegar extamente estes dados do balanço.

 

Desde já agradeço pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie um arquivo com nome cookies.txt na pasta do script e coloque permisao 777 (se nao for windows)

depois:

$ch = curl_init();
$url = "http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=GERDAU%20S.A.&pregao=GERDAU&ccvm=3980&data=31/03/2009&tipo=4";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$result = curl_exec($ch);
curl_close($ch);
unset($ch);
//O COOKIE JA FOI RECEBIDO (EU ESPERO)

//Agora vams pro segundo url
$ch = curl_init();
$url2 = "http://www.bovespa.com.br/dxw/FormDetalheDXWBalanco.asp?TipoInfo=C&Tipo=01%20-%20Ativo";
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_REFERER, $url2);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$resultado = curl_exec($ch);
curl_close($ch);

//Agora você tem que fazer os tratamentos necessarios na variavel $resultado que contem as informacoes


//exibir o resultado:
echo $resultado;

obs.:

*Se você nao fizer e nao colocar permisao no arquivo cookies.txt corretamente, vai aparecer sessao invalida.

*Codigo testado

*Boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um adendo ao que Rafael escreveu é que, pelo menos em meus testes, o valor para CURLOPT_COOKIEFILE e CURLOPT_COOKIEJAR tem de ter um formato de cookie válido.

 

Eu fiz um esqueminha usando a PDO para analisar o banco de dados SQLITE do Firefox e construir um registro em TXT tal qual era o formato antigo do navegador.

 

Assim eu logava manualmente no site, depois fazia uma query nesse BD, construia o meu arquivo de cookie e pronto, estava sempre logado ^^

 

Já pro eibon, tem como simular o "clique no botãozinho" sim. Basta você fazer a requisição para a página do action e, no POSTDATA do cURL, enviar algum valor para o name do botão. Testado com um sistema de busca de um site.

 

Porém, se você quiser uma solução mais robusto SEM cURL, sugiro o Zend_Http_Client, do Zend Framework. Dezenas de vezes mais rápido ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie um arquivo com nome cookies.txt na pasta do script e coloque permisao 777 (se nao for windows)

depois:

$ch = curl_init();
$url = "http://www.bovespa.com.br/dxw/FrDXW.asp?site=B&mercado=16&razao=GERDAU%20S.A.&pregao=GERDAU&ccvm=3980&data=31/03/2009&tipo=4";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$result = curl_exec($ch);
curl_close($ch);
unset($ch);
//O COOKIE JA FOI RECEBIDO (EU ESPERO)

//Agora vams pro segundo url
$ch = curl_init();
$url2 = "http://www.bovespa.com.br/dxw/FormDetalheDXWBalanco.asp?TipoInfo=C&Tipo=01%20-%20Ativo";
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_REFERER, $url2);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$resultado = curl_exec($ch);
curl_close($ch);

//Agora você tem que fazer os tratamentos necessarios na variavel $resultado que contem as informacoes


//exibir o resultado:
echo $resultado;

obs.:

*Se você nao fizer e nao colocar permisao no arquivo cookies.txt corretamente, vai aparecer sessao invalida.

*Codigo testado

*Boa sorte!

 

 

Amigo,

 

Estou utilizando o php no windows ou seja, não precisa da permissão 777 porém ele apresenta a messagem de sessão inválida. o arquivo cookies.txt foi criado. O que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo cookies.txt continuou em branco apos a execucao do script? Aqui deu de boa eo arquivo ficou com os dados do cookie escrito.. Lembrando tambem que o arquivo cookies.txt tem que ficar na mesma pasta do script

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo cookies.txt continuou em branco apos a execucao do script? Aqui deu de boa eo arquivo ficou com os dados do cookie escrito.. Lembrando tambem que o arquivo cookies.txt tem que ficar na mesma pasta do script

 

Exatamemente. Ele ficou em branco. O arquivo txt está na mesma pasta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao entendi porque nao funcionou no seu php. Eu testei aqui ate em servidor gratis e deu certo.

http://pecks.k2free.com/teste.php

 

Rafael,

 

Com toda a certeza deve ser algum problema de configuração do meu php. Não tenho muita experiência em php, minha area é asp.net. Estou apenas começando no php. Vou verificar o que pode ser.

 

Gostaria muito de agradecer sua ajuda, é exatamente isso que estou precisando. Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso ai, espero que você consiga. Abracos

Rafael,

 

Consegui fazer rodar aqui na minha maquina !! Obrigado pela ajuda.

 

Bem agora estou tentando ler o html e jogar no meu banco de dados, e já estou com uma dúvida:

 

Estava querendo pega os dados que está nesta tag html da pagina

 

<td nowrap width="105" class="label">Código da Conta</td>

 

Para pegar a informação usei:

 

preg_match_all("/<td nowrap width=\"105\" class=\"label\"><\/td>/", $resultado, $tit_links);

echo $tit_links

 

Só que ele não imprimi nada na tela, como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

///primeiro q você n preciza uzar ppreg match all n preciza do all, segundo, q você n especificou o que quer pegar, pesquisa por regexp, terceiro q quando você uza preg match all, a pesquisa e guardada em Array entao você deve acessar por $var[1][0];, quarto q você colocou " na pesquisa, o PHP iria parar na primera aspa dupla, troque por aspas simples no começo e final

///vo t dar uma ajuda

 

$resultado = ;//requisição curl

preg_match('/<td nowrap width=\"105\" class=\"label\">([^\"])<\/td>/i', $resultado, $titlinks);

echo $titlinks[1];

 

 

Flw t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.