PHP DOMDocument HTML-таблицы в XML - PullRequest
       9

PHP DOMDocument HTML-таблицы в XML

0 голосов
/ 26 сентября 2019


Я использую простой PHP-скрипт на провайдере Altervista для получения данных из очень большой таблицы HTML (более 6300 строк) по этой ссылке .

Проблема заключается в том, что «Максимальное время выполнения превышено на 30 секунд» во время цикла строк.
Я хотел бы получить данные XML или даже текстовые данные в формате CSV, есть ли более быстрый способ, чем зацикливание каждой строки?

<?php  
set_time_limit(3000);
ini_set('max_execution_time', 3000);
function XML_Append($XML,$Q,$Sex,$TabCnt,$TabName) {
$pagecontent = file_get_contents($Q);
echo "DONE fetch";

$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$doc->loadHTML($pagecontent);
$tables = $doc->getElementsByTagName('table');
$rows = $tables->item($TabCnt)->getElementsByTagName('tr');
$rowLen=$rows->length;
echo $rowLen;
for($ir = 0; $ir < $rowLen; ++$ir) {
    echo $ir . "\r\n";
    $row=$rows[$ir];
}
unset($doc);
}
$QUERY_SPRINT_FEMMINILE="http://risultati.fitri.it/rank.asp?Anno=%ANNO%&TRank=S&Ss=F&PunDal=0.00&PunAl=999.99";
$QUERY_SPRINT_MASCHILE="http://risultati.fitri.it/rank.asp?Anno=%ANNO%&TRank=S&Ss=M&PunDal=0.00&PunAl=999.99";
$QUERY="";
$ANNO="";
if (isset($_GET['Anno'])) {
    $ANNO= $_GET['Anno'];
} else {
    $ANNO="2019";
}
$QUERY=str_replace("%ANNO%",$ANNO,$QUERY_SPRINT_MASCHILE);
$xml = new SimpleXMLElement('<DocumentElement/>');
XML_Append($xml,$QUERY,"M",1,"SP");
echo "DONE";
?>

код цикла:

  foreach ($rows as $row)
    {
    $xmlTable = $XML->addChild($TabName);
    $xmlTable->addChild('_S', $Sex);    
    $cols = $row->getElementsByTagName('td');
    $colLen=$cols->length;

        for($i = 0; $i < $colLen; ++$i) {
            $NomeColonna="C" . $i;
            $value= $cols->item($i)->nodeValue;
            $value=trim(str_replace(PHP_EOL, "", $value));
            $value=str_replace("\xc2\xa0","",$value); 
            $xmlTable->addChild($NomeColonna,$value);
        }
    }
...