par

Comment faire pour aspirer tout le code HTML d'un site Web en PHP ?

1 Réponse

+1 vote
par

Il existe plusieurs manières de récupérer le contenu d'une page web (tout le code HTML) et ainsi de le stocker par exemple dans une variable pour ensuite en extraire la portion qui nous intéresse.

Pour effectuer un scrap d'une page web, c'est à dire aspirer de manière automatique son contenu et son code HTML, vous pouvez utiliser CURL de la manière suivante :

$url = "http://www.google.fr";
$options = array(
//CURLOPT_PROXY => "127.0.0.1:8080",
//CURLOPT_PROXYUSERPWD => "user:password",
//CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER         => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_ENCODING       => "",
CURLOPT_USERAGENT      => "spider",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_AUTOREFERER    => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT        => 120,
CURLOPT_MAXREDIRS      => 10,
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$scrap = curl_exec($ch);
curl_close($ch);
echo $scrap;

On peut également utiliser une fonction PHP native : file_get_contents()

Remarque : Cette fonction quand elle est utilisée tel quel, n'intègre pas les entêtes HTTP, il est donc préférable de créer un contexte de flux pour y intégrer l'entête adéquate. Pour ce faire on utilise la fonction stream_context_create()

Voici comment procéder pour aspirer un site avec PHP :

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);
$context = stream_context_create($options);
$file = file_get_contents('http://www.google.fr/', false, $context);
echo $file;

Les deux solutions fonctionnent, cependant CURL offre d'avantage d'options.

Tendances

Questions liées

1 réponse
posée par anonyme 05-Septembre-2018
1 réponse
1 réponse

Merci pour votre visite sur 1FORMATIK.com

Un petit clic sur la pub est toujours apprécié, c'est elle qui finance le site

Bon surf

...