Quero recuperar o código HTML de um link (página da web) em PHP. Por exemplo, se o link for
então eu quero o código HTML da página que é servida. Quero recuperar esse código HTML e armazená-lo em uma variável PHP.
Como posso fazer isso?
Quero recuperar o código HTML de um link (página da web) em PHP. Por exemplo, se o link for
então eu quero o código HTML da página que é servida. Quero recuperar esse código HTML e armazená-lo em uma variável PHP.
Como posso fazer isso?
Respostas:
Se o seu servidor PHP permite wrappers url fopen, a maneira mais simples é:
$html = file_get_contents('/programming/ask');
Se precisar de mais controle, você deve olhar para as funções cURL :
$c = curl_init('/programming/ask');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
//curl_setopt(... other options you want...)
$html = curl_exec($c);
if (curl_error($c))
die(curl_error($c));
// Get the status code
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);
Além disso, se você deseja manipular a página recuperada de alguma forma, você pode tentar algum analisador DOM de php. Acho que o PHP Simple HTML DOM Parser é muito fácil de usar.
Você pode verificar as bibliotecas YQL do Yahoo: http://developer.yahoo.com/yql
A tarefa em mãos é tão simples quanto
select * from html where url = 'http://stackoverflow.com/questions/ask'
Você pode tentar isso no console em: http://developer.yahoo.com/yql/console (requer login)
Veja também o screencast de Chris Heilmanns para algumas boas idéias sobre o que mais você pode fazer: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html
Maneira simples: Use file_get_contents()
:
$page = file_get_contents('http://stackoverflow.com/questions/ask');
Por favor note que allow_url_fopen
deve estar true
em você php.ini
para ser capaz de usar wrappers URL-aware.
Forma mais avançada: se você não pode alterar a configuração do PHP,allow_url_fopen
é false
por padrão e se ext / curl estiver instalado, use a cURL
biblioteca para se conectar à página desejada.
olhe para esta função:
include_once('simple_html_dom.php');
$url="http://stackoverflow.com/questions/ask";
$html = file_get_html($url);
Você pode obter todo o código HTML como um array (formulário analisado) usando este código Baixe o arquivo 'simple_html_dom.php' aqui http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download
Aqui estão duas maneiras diferentes e simples de obter conteúdo de URL :
1) o primeiro método
Habilite Allow_url_include de sua hospedagem (php.ini ou outro lugar)
<?php
$variableee = readfile("http://example.com/");
echo $variableee;
?>
ou
2) o segundo método
Habilite php_curl, php_imap e php_openssl
<?php
// you can add anoother curl options too
// see here - http://php.net/manual/en/function.curl-setopt.php
function get_dataa($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$variableee = get_dataa('http://example.com');
echo $variableee;
?>
você pode usar o método DomDocument para obter uma variável de nível de tag HTML individual também
$homepage = file_get_contents('https://www.example.com/');
$doc = new DOMDocument;
$doc->loadHTML($homepage);
$titles = $doc->getElementsByTagName('h3');
echo $titles->item(0)->nodeValue;