Я хочу очистить некоторые данные с помощью парсера Php Simple Dom с soccerstats.com, но я не могу, потому что всегда появляется страница cookie перед загрузкой нормальной страницы. Как обойти страницу cookie? Мой код такой:
<?php
include_once('../scrapper/scrapper.php');
$url = 'https://www.soccerstats.com/matches.asp';
$html = file_get_html($url);
$stats = array();
foreach($html->find('table') as $table) {
$stats[] = $table->outertext;
}
$results = implode(",", $stats);
echo $results;
?>






Очень быстрый просмотр страницы 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() позволяет нам создать контекст с требуемым печенье, который будет использоваться в функции 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;
Вам следует переименовать свой скребок только с одним п.