Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Daew,
como que eu faço para pegar um determinado trecho do conteúdo obtido quando uso a biblioteca cURL?
Com o seguinte código, eu consigo retornar a minha página por inteiro, mas eu gostaria de obter somente on trecho disso tudo:
$ch = curl_init();
// informar URL e outras funções ao CURL
curl_setopt($ch, CURLOPT_URL, "[http://meusite.com.br/noticias/mercado-imobiliario/3945"](http://meusite.com.br/noticias/mercado-imobiliario/3945));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILETIME, true);
$output = curl_exec($ch);// acessar URL
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);// Pegar o código de resposta
if ($response_code == '404') {
echo 'Página não existente';
} else {
echo $output;
}
é possível eu pegar somente um trecho dessa página, tipo uma DIV ou outra, ou eu teria de criar uma página específica que retornasse somente o que eu quero, como em um XML por exemplo??
Valeu aí pela dica André,
eu dei uma procurada e consegui pegar os valores, porém, eles estão vindo sem tags HTML, tá vindo somente texto puro...
...continuando do exemplo anterior:
$doc = new DOMDocument();
$doc->loadHTML($output);
$xpath = new DOMXpath($doc);
$nome = $xpath->query( "//div[@id='listaNoticias']" )->item( 0 )->nodeValue;
echo $nome;
Eu li a respeito, e vi que o problema é que o nodeValue tem algum problema para carregar o HTML, por isso vem só o texto.
Não tem como ler esse conteúdo HMTL específico de minha página e retornar um tipo de array, assim como é com o SimpleXML ao ler um xml qualquer???
Não teria uma forma de converter esse documento HTML para XML, para assim usar o SimpleXML??
Poderia mostrar o conteúdo e o que está querendo pegar dele?
Pronto...
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "[http://temoscasa.com.br/noticias/mercado-imobiliario/"](http://temoscasa.com.br/noticias/mercado-imobiliario/));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILETIME, true);
$output = curl_exec($ch);// acessar URL
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);// Pegar o código de resposta
if ($response_code == '404') {
echo 'Página não existente';
} else {
//echo $output;
$doc = new DOMDocument();
$doc->formatOutput = true;
$doc->loadHTML($output);
$xpath = new DOMXpath($doc);
$elemento = $xpath->query( "//div[@id='listaNoticias']" )->item( 0 )->nodeValue;
echo $elemento;
}//end else
Dessa forma, eu consigo pegar só o conteúdo no miolo do site, que irá mudar de acordo com a url que eu passar...
Eu gostaria de obter o HTML desse trecho... para poder manipular de acordo com minha necessidade... assim como se faz com um XML... sacas??
Caso não for possível fazer isso, eu seria obrigado a gerar algum tipo de XML dinâmico com todo o conteúdo das páginas.... para assim poder manipular, mas acho que essa não seria a melhor forma de fazer.. =/
--
*"Pensei em converter esse documento HTML para XML ou simplemente lê-lo com o SimpleXML, pois a estrutura de marcação é semelhante, mas não funfou por conta do DOCTYPE..."***
Aqui a solução: http://fr.php.net/manual/en/class.domelement.php#86803
Opa,
muito obrigado aí pela ajuda André, funcionou direitinho aqui. Agora vou trabalhar em cima disso...
vlw aí... ;)
DOMDocument + DOMXPath. Procure por isso no manual do PHP.