У меня есть некоторые проблемы с моим сканером в php

Мой сканер не работает Я хочу, чтобы это вывело

<div class="content">

Но когда я запускаю его, я получаю этот вывод:

Array ()

Это мой код:

<?php

$dom = new DOMDocument;
@$dom->loadHTML('https://www.google.com/');

$xp = new DOMXPath($dom);
$links = $xp->query('//div[contains(@class,"content")]');

$result = array();
foreach ($links as $link) {
    $result[] = array($link->getAttribute("innerHTML"), $link->nodeValue);
}
print_r($result);

?>

1 ответ

Решение

DOMDocument::loadHTML() анализирует HTML из строки, которую вы передаете, см. документы. В вашем случае строка https://www.google.com/ что, очевидно, не является допустимым HTML.

Вы можете использовать cURL для получения фактического HTML со страницы. Я провел несколько быстрых тестов, и, похоже, ответ Google зависит от агента пользователя, поэтому вы можете использовать реальный, например,

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36');
$html = trim(curl_exec($ch));

curl_close($ch);

$dom = new DOMDocument;
@$dom->loadHTML($html);
// rest of the code
Другие вопросы по тегам