Ir para conteúdo

POWERED BY:

Arquivado

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

P3rukao

[Resolvido] Obter conteúdo de outro site com cURL

Recommended Posts

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");
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??

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto...

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "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..."

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.