Maison >développement back-end >tutoriel php >Analyse HTML et grattage d'écran avec la bibliothèque HTML DOM simple
Ce tutoriel montre comment analyser efficacement le HTML à l'aide d'un analyseur open-source, en évitant les complexités des expressions régulières. Nous allongerons les TUTS envato à titre d'exemple, extraitant des titres d'articles et des descriptions. Ceci est à des fins illustratives; N'oubliez pas d'obtenir toujours la permission avant de gratter un site Web.
Commencez par installer Composer, un gestionnaire de packages PHP, pour simplifier l'installation de la bibliothèque.
Les étapes supplémentaires sont détaillées ci-dessous.
Une documentation complète est disponible sur le référentiel Github officiel du projet.
---
Créons un script pour extraire des titres d'articles et des descriptions de TUTSTATO. Il s'agit d'une démonstration et ne doit pas être effectuée sans autorisation. Le grattage peut surcharger les serveurs.
L'extrait de code de base:
<code class="language-php">use voku\helper\HtmlDomParser; require_once 'vendor/autoload.php'; $articles = []; getArticles('https://code.tutsplus.com/tutorials');</code>
Cela inclut la bibliothèque nécessaire et initialise un tableau pour stocker les données de l'article. La fonction getArticles
(définie ultérieurement) récupère et traite la page Web.
Le cœur du script extrait les informations de l'article:
<code class="language-php">$items = $html->find('article'); foreach($items as $post) { $articles[] = [ /* title */ $post->findOne(".posts__post-title")->firstChild()->text(), /* description */ $post->findOne("posts__post-teaser")->text() ]; }</code>
Cela itère dans chaque élément d'article (<article></article>
) et extrait le titre et la description à l'aide de sélecteurs CSS. Chaque entrée $articles
contiendra une paire de titre et de description. Par exemple:
<code class="language-php">$articles[0][0] = "My Article Name Here"; $articles[0][1] = "This is my article description";</code>
Pour gérer plusieurs pages, nous identifions le lien de page "Suivant":
le HTML pertinent:
<code class="language-html"><a aria-label="next" class="pagination__button pagination__next-button" href="https://www.php.cn/link/a3cdf7cabc49ea4612b126ae2a30ecbf" rel="next"><i class="fa fa-angle-right"></i></a></code>
Le script trouve ce lien, extrait l'attribut href
et appelle récursivement getArticles()
pour les pages suivantes. Surtout, l'objet $html
est éliminé pour éviter l'épuisement de la mémoire.
L'analyse de grands sites Web peut prendre du temps. Ce tutoriel fournit une base pour l'analyse HTML à l'aide d'une bibliothèque conviviale. Bien que cette bibliothèque soit pratique, n'oubliez pas que d'autres méthodes, telles que la manipulation DOM intégrée de PHP avec XPath, existent. Prioriser toujours l'obtention de l'autorisation avant de gratter tout site Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!