Парсинг страницы в PHP

Я хочу очистить некоторые данные с помощью парсера 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; 
?>

Вам следует переименовать свой скребок только с одним п.

Cœur 14.01.2019 14:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
138
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Очень быстрый просмотр страницы 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;

Другие вопросы по теме