web-dev-qa-db-fra.com

Web grattant dans PHP

Je cherche un moyen de faire un petit aperçu d'une autre page à partir d'une URL donnée par l'utilisateur dans PHP .

J'aimerais récupérer uniquement le titre de la page, une image (comme le logo du site Web) et un peu de texte ou une description, le cas échéant. Existe-t-il un moyen simple de faire cela sans bibliothèques/classes externes? Merci

Jusqu'ici, j'ai essayé d'utiliser la classe DOCDocument, de charger le code HTML et de l'afficher à l'écran, mais je ne pense pas que ce soit la bonne façon de procéder.

11
federicot

Je vous recommande d'envisager simple_html_dom pour cela. Cela rendra les choses très faciles.

Voici un exemple de travail montrant comment extraire le titre et la première image.

<?php
require 'simple_html_dom.php';

$html = file_get_html('http://www.google.com/');
$title = $html->find('title', 0);
$image = $html->find('img', 0);

echo $title->plaintext."<br>\n";
echo $image->src;
?>

Voici un deuxième exemple qui fera la même chose sans une bibliothèque externe. Je dois noter que l'utilisation de regex sur HTML n'est pas une bonne idée.

<?php
$data = file_get_contents('http://www.google.com/');

preg_match('/<title>([^<]+)<\/title>/i', $data, $matches);
$title = $matches[1];

preg_match('/<img[^>]*src=[\'"]([^\'"]+)[\'"][^>]*>/i', $data, $matches);
$img = $matches[1];

echo $title."<br>\n";
echo $img;
?>
21
Jordan Mack

Vous pouvez utiliser SimpleHtmlDom pour cela. et ensuite recherchez les balises title et img ou ce que vous devez faire d'autre.

2
Vijay Sharma

Vous pouvez utiliser l'une ou l'autre de ces bibliothèques. Comme vous savez que chacun a des avantages et des inconvénients, vous pouvez consulter les notes sur chacun d’entre eux ou prendre le temps de l’essayer et de l’essayer vous-même:

  • Guzzle : Un client HTTP indépendant, inutile de dépendre de cURL, SOAP ou REST.
  • Goutte : Construit sur Guzzle et certains des composants Symfony par le développeur Symfony.
  • hQuery : Un racleur rapide avec des capacités de mise en cache. haute performance pour gratter les documents volumineux.
  • Requests : célèbre pour son utilisation conviviale.
  • Buzz : Un client léger, idéal pour les débutants.
  • ReactPHP : Racleur asynchrone, avec didacticiels détaillés et exemples.

Vous feriez mieux de tous les vérifier et d’utiliser tout le monde dans l’occasion la mieux prévue.

2
Behrad Khodayar