Ir ao conteúdo
  • Cadastre-se

Importar dados do meuguia.tv em php


pedroserquiz

Posts recomendados

Ola,

estou começando a desenvolver um software, porém, nao sei como fazer para importar os dados de um site (http://www.meuguia.tv/programacao/categoria/Filmes) e converter para xml os mesmos.

Por exemplo, o dentro deste endereço, tem varios links de varios canais de tv e seus respectivos programas, esses programas sao atualizados diariamente, o que o sistema tem q fazer é, entrar em cada link deste e pegar os dados contidos dentro deles e ir armazenando em um banco de dados.

alguem poderia me dar uma luz?

vi que cada link desses, o que muda na real, é a id no final de cada link, mas nao sei como fazer uma comparação para que o sistema identifique cada um e possa pegar as informações dos mesmos.

aguardo uma resposta

Link para o comentário
Compartilhar em outros sites

então você primeiro tem que pegar o conteudo da pagina para uma variavel

$arq = file_get_contents("http://www.meuguia.tv/programacao/categoria/Filmes");

existem outros jeitos, como com Curl

depois você passa esses links para uma array, acho mais fácil com expressões regulares

$math = array();
preg_match_all("/\/programacao\/programa\/[0-9]+/",$arq,$math);

agora a array $math vai estar assim

Array
(
[0] => Array
(
[0] => /programacao/programa/2790437
[1] => /programacao/programa/2782537
[2] => /programacao/programa/2782453
... Continua ....

agora você da um foreach na array

foreach($math[0] as $value) {
$conteudo = file_get_contents("http://www.meuguia.tv" . $value);
// Depois passa a variavel conteudo para o banco de dados
}

Obs: Eu usei file_get_contents porque é a maneira mais fácil, mas há outras manerais de se fazer isso

Link para o comentário
Compartilhar em outros sites

pow cara, deu certo era isso mesmo que eu queria, eu ja tinha feito algo mais ou menos, porém, nao tinha pensado dessa forma, a forma que fiz tambem usei file get contents, segue a baixo meu codigo, faço questao de postar para que vocês possam ver que eu fiz pesquisas na internet e que fui atras sim desse conteudo.

function lerpag() {

$url = file_get_contents('http://meuguia.tv/programacao/programa/2686542/');

preg_match_all('/sinopse(.+)div/s', $url, $array);

$resultado = $array[0][0];

$retirar = array('sinopse">');

$resultado = str_replace($retirar, '', $resultado);

echo "$resultado";

}

lerpag();

PS: gostaria, se possivel, que voce me explicasse essa sentença "/\/programacao\/programa\/[0-9]+/"

atenciosamente

Link para o comentário
Compartilhar em outros sites

sem dar o \ nos caracteres especiais a expressao seria essa:

/programacao/programa/[0-9]+

esse [0-9] significa numeros de 0 à 9, e esse + significa em quantidade superior a 1;

e tem um / no começo e no fim que delimita o inicio e fim da expressao

Se você quiser entender mais pesquise sobre expressões regulares

http://guia-er.sourceforge.net/

Link para o comentário
Compartilhar em outros sites

então, e se eu quiser por exemplo que ele nao pegue tudo tudo, pegue apenas aqui, cada link eu quero pegar somente esse conteudo que vai dai ate o fim da div, pois ta pegando o anuncio da google por exemplo.

queria adicionar esse comando ai mas nao estou conseguindo

\/sinopse(.+)div+/

por exemplo, como adiciono a esse preg match all?

Link para o comentário
Compartilhar em outros sites

não sei se entendi, mas isso pode ser util:

$arq = "<a>Link</a>";
$match = array();
if(preg_match("/<a>(?P<conteudo>.+)<\/a>/",$arq,$match)) {
echo $match['conteudo'];
}

nesse exemplo a expressão foi "<a>(?P<conteudo>.+)<\/a>", ele pega o que esta entre as tags "<a>" e "</a>", em um grupo chamado 'conteudo', depois eu colo esse grupo separadamente.

O preg_match_all você só vai usar se for varios resultados, para pegar o titulo por exemplo só vai ter um titulo

OBS: para pegar o que está entre duas tags (ou textos) você tambem pode usar dois explode

$arq = "<a>Link</a>";
$arr1 = explode('<a>',$arq);
$arr2 = explode('</a>',$arr1[1]);
echo $arr2[0];

Link para o comentário
Compartilhar em outros sites

tipo eu gostaria de pegar todo o conteudo que esta entre as tags, <div id="sinopse"> e </div>

utilizando aquele codigo que voce colocou ali em cima:

function lerpag($categoria){

$arq = file_get_contents("http://www.meuguia.tv/programacao/categoria/$categoria");

$match = array();

preg_match_all("/\/programacao\/programa\/[0-9]+/",$arq,$match);

foreach($match[0] as $value) {

$conteudo = file_get_contents("http://www.meuguia.tv" . $value);

echo $conteudo;

}

como ficaria?

Link para o comentário
Compartilhar em outros sites

faz a função separada

function entre_string($str,$antes,$depois) {
$arr1 = explode($antes,$str);
$arr2 = explode($depois,$arr1[1]);
echo $arr2[0];
}

agora é so usar

function lerpag($categoria){
$arq = file_get_contents("http://www.meuguia.tv/programacao/categoria/$categoria");
$match = array();
preg_match_all("/\/programacao\/programa\/[0-9]+/",$arq,$match);
foreach($match[0] as $value) {
$conteudo = file_get_contents("http://www.meuguia.tv" . $value);
$sinopse = entre_string($conteudo,'<div id="sinopse">','</div>');
echo $sinopse;
}
}

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!