Kategorien
PHP

PHP Simple HTML DOM Parser Fehler beim Crawlen einiger Webseiten

Einige Webseiten konnte ich mit dem genialen Tool PHP Simple HTML DOM Parser nicht crawlen, weilder Inhalt, den die Methode file_get_contents() false zurücklieferte.

Um den Fehler zu fixen, war es lediglich nötig, den Funktionsaufruf zu ersetzen:

$html = file_get_html($myUrl);

durch die Funktion und die Nutzung von Curl mit einem korrektem USER_AGENT Header:

$html = getHtml($myUrl);
   function getHtml($url)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        $str = curl_exec($curl);
        curl_close($curl);

        $html = str_get_html($str);
        return $html;
    }

Curl is dazu noch performanter als file_get_contents().

Bei anderen Fehlern und Problem lohnt sich die sehr gute FAQ Seite des Projektes.