#14377

Note : PHP récupérer titre d’une page

On peut faire de plein de moyens différents, généralement on passe par des preg_grep(), mais on a aussi le problème de l’encodage qu’il faut gérer.

Voilà une solution que je teste pour le moment avec assez de succès :

$url = "http://example.com/";

$html_source = file_get_contents($url);
$dom_tree = new DOMDocument();
$dom_tree->loadHTML($html_source);
$titles = $dom_tree->getElementsByTagName('title');
$title = trim($titles->item(0)->nodeValue);

return $title;



Ça utilise bien-sûr les lib intégrées à PHP pour parser du HTML. Évidemment, ça retournera plein d’erreurs si le HTML n’est pas valide (99% des pages web), donc j’ajoute aussi ça :

libxml_use_internal_errors(true);
// dom parsing
libxml_clear_errors();


Ça va laisser les erreurs de code dans la lib de parsage. Libre à vous de les ignorer ou non, mais elles ne viendront plus s’afficher en HTML.
N’oubliez pas d’ajouter les gardes-fou habituels : URL ne répond pas, URL n’est pas du HTML, etc.

Autrement, voilà :
mon code de récupération d’une page Web en PHP (avec cURL)
le même code, mis à jour pour les pages qui sont Gzipé par défaut

cURL me permet de faire une requête qui envoie des headers complètes (avec UA et autres, pour passez un éventuel "UA-gate"), de suivre les redirections, d’accepter les cookies et d’autres.

Avec ça je fais à peu près le tour.

Sinon, pour faire 150 requêtes en parallèle, file_get_contents() ne vous servira pas. CURL permet de le faire : http://lehollandaisvolant.net/?d=2014/05/20/19/21/36-php-faire-plusieurs-requetes-http-simultanees-avec-curl
http://lehollandaisvolant.net/?mode=links&id=20160128180954