Search code examples
phpsimple-html-dom

PHP Advanced HTMLDOM error


I had php AdvancedHTMLDOM working just fine for a long time. However, about a week ago I noticed that the data I am scraping are not being updated for some reason.

I ran the script manually and got the following error:

root@telemetry:/home/telemetry/scripts/pressure# php -f get_pressure_nodes.php                                                                  
PHP Fatal error:  Uncaught Error: Class 'DOMDocument' not found in /home/telemetry/scripts/pressure/advanced_html_dom-master/advanced_html_dom.php:171
Stack trace:
#0 /home/telemetry/scripts/pressure/advanced_html_dom-master/advanced_html_dom.php(167): AdvancedHtmlDom->load('<html>\n<head>\n<...', false)
#1 /home/telemetry/scripts/pressure/advanced_html_dom-master/advanced_html_dom.php(747): AdvancedHtmlDom->__construct('<html>\n<head>\n<...')
#2 /home/telemetry/scripts/pressure/advanced_html_dom-master/advanced_html_dom.php(748): str_get_html('<html>\n<head>\n<...')
#3 /home/telemetry/scripts/pressure/get_pressure_nodes.php(17): file_get_html('get_pressure_no...')
#4 {main}
  thrown in /home/telemetry/scripts/pressure/advanced_html_dom-master/advanced_html_dom.php on line 171
root@telemetry:/home/telemetry/scripts/pressure#

Here is my script (I kept the basics for simplicity, also I got this code from somewhere I cannot recall, so if it is yours please inform me so I can give credit where it is due):

<?php

require('advanced_html_dom-master/advanced_html_dom.php');
$html = file_get_html('get_pressure_nodes.html');
$table = $html->find('table', 1);

$rowData = array();

foreach($table->find('tr') as $row)
{
    // initialize array to store the cell data from each row
    $temp = array();

    foreach($row->find('td') as $cell)
    {
        // push the cell's text to the array
        $temp[] = $cell->plaintext;
    }

    $rowData[] = $temp;
}

foreach ( $rowData as $cell_contents )
{
    print ( $cell_contents ) ;
}
?>

Solution

  • If AdvancedHTMLDOM has stopped working suddenly, this SO Post could be of help in fixing it.