Попытка получить тот же результат, но с меньшим количеством кода, используя простой html dom - PullRequest
1 голос
/ 17 июня 2020

Это мой код. Кто-то набирает в <input name='countryname'> одно название страны, например, Испания, и программа очищает все данные из link. приведение случаев covid-19, смертей .. и т. д. c


if(!empty($_POST['countryname'])){
    $str = $_POST['countryname'];
}

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'https://www.worldometers.info/coronavirus/country/'.$str);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

$html = curl_exec($ch);
curl_close($ch);

$DOM = new DOMDocument;
libxml_use_internal_errors(true);
$DOM->loadHTML($html);

$elements = $DOM->getElementsByTagName('span');

echo "<br><br><br><div class='container text-center' style = 'font-weight : bold'>";
echo "<span style class='words'>CoronaVirus Cases : </span>" . $elements->item(4)->nodeValue . "<br>";

echo "<span style class='words'>Deaths : </span>" . $elements->item(5)->nodeValue . "<br>";
echo "<span style class='words'>Recovered : </span>" . $elements->item(6)->nodeValue . "<br>";
echo "<div>";

Моя проблема заключается в том, что я пытаюсь написать для этой программы с меньшим количеством кода и вывести тот же результат .. используя этот код.

require 'lib/simple_html_dom.php';

if(!empty($_POST['countryname'])){
    $str = $_POST['countryname'];
}

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'https://www.worldometers.info/coronavirus/country/'.$str);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

$html = curl_exec($ch);
curl_close($ch);

$dom = file_get_html($html);

$data = $dom->find('div[class=maincounter-number] span');

    echo "Coronavirus Cases: ".$data[0]->plaintext."<br>";
    echo "Deaths: ". $data[1]->plaintext."<br>";
    echo "Recovered: ". $data[2]->plaintext."<br>";

Я получаю такие ошибки, как Uncaught Error: Call to a member function find() on bool или warning: file get contens(), и выдает необработанный вывод html .. часть с простым html dom работает нормально, что я тестировал. Есть идеи, что происходит? thnx

...