@rusgayfer

Как спарсить со страницы праздники?

Хочу вывести праздники с этого ресурса kakoysegodnyaprazdnik.ru

Суть: Каждый праздник с новой строки.
Проблема: Вроде нужно делать регуляркой, но не получается из-за рекламы спарсить все праздники (выводит не все). Как нужно правильно сделать?

$re = '~<(?:span itemprop="text")[^>]*>(.+?)</(?:span)>~s';

$str = file_get_contents('http://kakoysegodnyaprazdnik.ru');

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

print_r($matches);
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
@generate
...
Кажется нужно указывать User-Agent
<?php
$html = 'http://kakoysegodnyaprazdnik.ru/';
$ch = curl_init($html);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);
preg_match_all('/<span itemprop="text">(?<val>[^<]*)<\/span>/', $html, $match);
print_r($match['val']);
?>

Результат
Array
(
    [0] => Праздник иконы Божией Матери «Утоли моя печали»
    [1] => День рождения огнетушителя
    [2] => Всероссийский день зимних видов спорта
    [3] => День полётов на луну (мыслимых и немыслимых)
    [4] => День числа Эйлера («e» Day)
    [5] => День памяти священномученика Владимира, митрополита Киевского
    [6] => День герба Республики Татарстан
    [7] => День памяти святителя Григория Богослова
    [8] => День российского бизнес-образования
    [9] => День отказа от ненужных отношений (Dump Your Significant Jerk Day) - США
    [10] => День признательности свиной шкурке (Pork Rind Appreciation Day) - США
    [11] => День «Помашите рукой соседу» (Wave All Your Fingers At Your Neighbor Day) - США
    [12] => День отправки открыток друзьям (National Send a Card to a Friend Day) - США
    [13] => День розы (Rose Day) - Индия
    [14] => День пудинга (British Yorkshire Pudding Day) - Великобритания
    [15] => День борьбы с ВИЧ и СПИД среди афроамериканцев (National Black HIV/AIDS Awareness Day) - США
    [16] => День периодической таблицы (National Periodic Table Day) - США
    [17] => День поста и духовных практик «Шат-тила Экадаши» (Shat Tila Ekadashi) - Индия
    [18] => Воскресенье Супербоула (Super Bowl Sunday) - США
    [19] => День северных территорий (Northern Territories Day) - Япония
    [20] => День святого Мэла (Saint Mel`s Day) - Ирландия
    [21] => День балета (Ballet Day) - США
    [22] => Скаутское воскресенье (Scout Sunday) - США
    [23] => День независимости (Grenada Independence Day) - Гренада
    [24] => День фетучини «Альфредо» (National Fettuccine Alfredo Day) - США
    [25] => Именины у Григория, Моисея, Бориса, Филиппа, Александра, Виталия
    [26] => Григорьев день (Григорий Весноуказатель)
)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы