@rusgayfer

Как исправить парсер, если меняются data элемент или класс?

Проблема в том, что на сайте постоянно меняется data-reactid поэтому приходится менять эти цифры вручную, можно как то это исправить? Либо бывает меняется класс _1dQ3

// Парсим приметы
$date_signs = date('Y-m-d');
$uri = htmlentities("https://horoscopes.rambler.ru/primety/{$date_signs}/");
$content = file_get_contents($uri); 
$pattern = "#<div class=\"_1dQ3\" data-reactid=\"81\"><span data-reactid=\"82\">(.+?.)</span></div>#is"; 
preg_match_all($pattern, $content, $matches); 

$text_signs = $matches[1][0];
$teg_del = array('<p class="p1">', '<p class="p2">', '<span class="s1">', '<span class="s2">', '</p>', '<p>');

$teg_zamena  = array("", "", "", "", "\n\n", "");
$text_signs = str_replace($teg_del, $teg_zamena, $text_signs);
$message =  "\n\n".$text_signs;
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
vadimushka_d
@vadimushka_d
Учусь на программиста
// Парсим приметы
$date_signs = date('Y-m-d');
$uri = htmlentities("https://horoscopes.rambler.ru/primety/{$date_signs}/");
$content = file_get_contents($uri); 
$pattern = "/<p class="p[1-9]?"><span class="s[1-9]?">(.+?)<\/p>/m"; 
preg_match_all($pattern, $content, $matches); 
$message = implode("\n\n", $matches[1]);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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