6. Oktober 2023
SimpleHTMLDom-Alternative
Viele Jahre habe ich „SimpleHTMLDom“ eingesetzt um Inhalte externer Websites, wie z.B. Jobs, News etc. auszulesen. Immer häufiger bin ich damit in letzter Zeit an die Grenzen von SimpleHTMLDom geraten. Sobald ein HTML-Dokument sehr groß ist (> 1MB) hat SimpleHTMLDom oft einen Fehler 500 erzeugt.
Die Alternative: Die PHP-Klasse DOMXPath! DOMXPath scheint auf den ersten Blick ein bisschen komplizierter als SimpleHTMLDom, ist aber deutlich performanter und kommt auch mit größeren Datenmengen sehr gut klar.
Ein Beispiel: Folgender Code gibt die Jobs in Musterstadt der Seite beispiel.de aus.
<?php
$html = file_get_contents('https://www.BEISPIEL.de/jobs');
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$items = $xpath->query('//div[contains(@data-city, "Musterstadt")]');
foreach ($items as $item) {
$link = $xpath->query('./a', $item)->item(0);
if ($link) {
$text = $link->nodeValue;
$url = $link->getAttribute('href');
echo '<a href="' . $url . '">' . $text . '</a><br>';
}
}
?>
Ein Cheatsheet zur Syntax findet sich hier: https://devhints.io/xpath
Ansonsten ist Chat GPT auch eine große Hilfe bei der Erstellung des Codes. 😉
War dieser Artikel hilfreich?
Nächster Artikel
YouTube-Videos responsive einbetten