Je souhaite récupérer le code HTML d'un lien (page web) en PHP. Par exemple, si le lien est
alors je veux le code HTML de la page qui est servie. Je veux récupérer ce code HTML et le stocker dans une variable PHP.
Comment puis-je faire ceci?
Je souhaite récupérer le code HTML d'un lien (page web) en PHP. Par exemple, si le lien est
alors je veux le code HTML de la page qui est servie. Je veux récupérer ce code HTML et le stocker dans une variable PHP.
Comment puis-je faire ceci?
Réponses:
Si votre serveur PHP autorise les wrappers fopen url, le moyen le plus simple est:
$html = file_get_contents('/programming/ask');
Si vous avez besoin de plus de contrôle, vous devriez regarder les fonctions 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);
Aussi, si vous voulez manipuler la page récupérée d'une manière ou d'une autre, vous voudrez peut-être essayer un analyseur PHP DOM. Je trouve PHP Simple HTML DOM Parser très facile à utiliser.
Vous pouvez consulter les bibliothèques YQL de Yahoo: http://developer.yahoo.com/yql
La tâche à accomplir est aussi simple que
select * from html where url = 'http://stackoverflow.com/questions/ask'
Vous pouvez essayer ceci dans la console à l' adresse : http://developer.yahoo.com/yql/console (nécessite une connexion)
Voir également le screencast de Chris Heilmann pour quelques bonnes idées sur ce que vous pouvez faire de plus: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html
Manière simple: utilisez file_get_contents():
$page = file_get_contents('http://stackoverflow.com/questions/ask');
Veuillez noter que cela allow_url_fopendoit être trueen vous php.inipour pouvoir utiliser des wrappers fopen prenant en charge les URL.
Méthode plus avancée: si vous ne pouvez pas modifier votre configuration PHP, allow_url_fopenc'est falsepar défaut et si ext / curl est installé, utilisez la cURLbibliothèque pour vous connecter à la page souhaitée.
vous pouvez utiliser file_get_contents si vous souhaitez stocker la source en tant que variable, mais curl est une meilleure pratique.
$url = file_get_contents('http://example.com');
echo $url;
cette solution affichera la page Web sur votre site. Cependant, curl est une meilleure option.
regardez cette fonction:
include_once('simple_html_dom.php');
$url="http://stackoverflow.com/questions/ask";
$html = file_get_html($url);
Vous pouvez obtenir tout le code HTML sous forme de tableau (formulaire analysé) en utilisant ce code Téléchargez le fichier 'simple_html_dom.php' ici http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download
Voici deux façons simples et différentes d'obtenir du contenu à partir d'une URL :
1) la première méthode
Activez Allow_url_include depuis votre hébergement (php.ini ou ailleurs)
<?php
$variableee = readfile("http://example.com/");
echo $variableee;
?>
ou
2) la deuxième méthode
Activer php_curl, php_imap et 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;
?>
vous pouvez également utiliser la méthode DomDocument pour obtenir une variable de niveau de balise HTML individuelle
$homepage = file_get_contents('https://www.example.com/');
$doc = new DOMDocument;
$doc->loadHTML($homepage);
$titles = $doc->getElementsByTagName('h3');
echo $titles->item(0)->nodeValue;