@dmitred

Как парсить html регулярными выражениями php?

Здравствуйте, пытаюсь спарсить музыку в вк. Задача просто спарсить исполнителей и названия песен определенного пользователя.

html_dom библиотека после 50 записей уже просто виснет страница и ничего не выполняется, не будет ли эффективнее регулярными выражениями парсить? я в них вообще ноль( вот пример блока который надо разобрать, таких может быть и 400.

<div class="audio_title_wrap"><a href="/search?c[q]=%D0%97%D0%BD%D0%B0%D0%BA%D0%B8&amp;c[section]=audio&amp;c[performer]=1" onmouseover="setTitle(this)" nodrag="1" onclick="return audioSearchPerformer(this, event)" class="audio_performer">Знаки</a><span class="audio_info_divider">–</span><span class="audio_title _audio_title" onmouseover="setTitle(this, domPN(this))"><span class="audio_title_inner" tabindex="0" nodrag="1" aria-label="Один Человек" onclick="return toggleAudioLyrics(event, this, '7576740_421989543', '298903473')">Один Человек</span>

На выходе надо получить строку : "знаки один человек"
как не используя сторонние библиотеки вытащить это все в цикле?
  • Вопрос задан
  • 379 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Уберите все теги следующей функцией из строки в примере:
<?php
function clear_tags($s){
     $s=preg_replace('/\<.+\>(.+)/','$1',$s);
     return preg_replace('/(.+)\<.+/','$1',$s);
}

$s=<<<t
<div class="audio_title_wrap"><a href="/search?c[q]=%D0%97%D0%BD%D0%B0%D0%BA%D0%B8&amp;c[section]=audio&amp;c[performer]=1" onmouseover="setTitle(this)" nodrag="1" onclick="return audioSearchPerformer(this, event)" class="audio_performer">Знаки</a><span class="audio_info_divider">–</span><span class="audio_title _audio_title" onmouseover="setTitle(this, domPN(this))"><span class="audio_title_inner" tabindex="0" nodrag="1" aria-label="Один Человек" onclick="return toggleAudioLyrics(event, this, '7576740_421989543', '298903473')">Один Человек</span>
t;

if (preg_match("/>([^>]+?)<\/a>/usi",$s,$matches)) {
	$match=$matches[1];
        echo $match.' - '.clear_tags($s); // Знаки - Один Человек
}
?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@WQP
Очищайте память, у вас перегрузка. На более мощном пк такого не будет. Регулярки потребляют ещё больше памяти.
Ответ написан
@Jony1337
У тебя там denwer или хостинг , для парсинга лучшее это сервер от 2 гб оперативки , на sprinthost дают пробный месяц , не реклама !
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы