Ir ao conteúdo

Importar dados do meuguia.tv em php


pedroserquiz

Posts recomendados

Postado

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

Postado

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

Postado

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

Postado

massa, eu tinha dado uma olhada em expressoes regulares ja, inclusive usei ali no meu codigo tb =D

valeu amigo, muito obrigado, agora posso continuar meu projeto =D

muito agradecido ok?

atenciosamente,

Pedro Serquiz

Postado

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?

Postado

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];

Postado

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?

Postado

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;
}
}

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!