Очень быстрый просмотр страницы https://www.soccerstats.com/matches.asp
показал, что на самом деле "страница cookie" действительно заключается в том, что требует, чтобы пользователь нажимал кнопку, которая - при нажатии - просто устанавливает cookie cookiesok
до значения yes
, как видно из источника на этой странице:
<button class="button button3" onclick=" setCookielocal('cookiesok', 'yes', 365)"><font size='4'>I agree. Continue to website.</font></button>
Итак, нам нужно как-то заставить PHP извлечь страницу с этим набором cookie.
Поскольку вы используете библиотеку https://sourceforge.net/projects/simplehtmldom/ и ее функцию file_get_html()
, я изучил исходный код этой функции и обнаружил, что она действительно использует функцию file_get_contents()
за кулисами - и в то же время это позволяет нам передавать наш собственный "контекст", который мы можем создать с помощью функции stream_context_create()
.
Короче говоря, stream_context_create()
позволяет нам создать контекст с необходимыми cookie для использования в функции file_get_html()
.
Финальный код:
<?php
include_once '../scrapper/scrapper.php';
// Options for the context we're about to create.
$options = [
"http" => [
"header" => "Cookie: cookiesok=yes\r\n",
],
];
// Context we're going to pass to the file_get_html() function.
$context = stream_context_create($options);
$url = 'https://www.soccerstats.com/matches.asp';
$html = file_get_html($url, false, $context);
$stats = array();
foreach($html->find('table') as $table) {
$stats[] = $table->outertext;
}
$results = implode(",", $stats);
echo $results;