[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как отпарсить?
kuzroman
Доброго времни суток, задача такая
есть:

<div class="news" >
<b>
Фильм</b> : Высоцкий. Спасибо, что живой<br/>
<b>
Год выхода</b>: 2011<br/>
<b>
Жанр</b> : драма, биография<br/>
<b>
Режиссер</b>: Петр Буслов<br/>
<b>
В ролях:</b> Оксана Акиньшина, Сергей Безруков, Андрей Смоляков, Иван Ургант, Максим Леонидов, Андрей Панин, Владимир Ильин, Дмитрий Астрахан, Анна Ардова, Владимир Меньшов<br/>
<b>
Выпущено</b>: Россия, Дирекция Кино<br/>
<b>
Продолжительность</b>: 02:07:51<br/>
<b>
Перевод</b>: Оригинал<br /><br/>
<b>
Качество</b>: TS<br/>
<b>
Размер</b>: 1.37 Gb<br/><br/>
<b>
О фильме</b>: Действие фильма разворачивается в 1979 году, когда на одном из концертов Высоцкому становится плохо с сердцем. Он переживает клиническую смерть.
</div>


мне нужно в разные переменные занести название фильма, Жанр...
кто знает как это реализовать, js/jquery/php неважно
Контент менять нельзя!



Спустя 1 минута, 43 секунды (4.12.2011 - 19:30) Игорь_Vasinsky написал(а):
simple php dom те в помощь wink.gif

Спустя 43 секунды (4.12.2011 - 19:31) bulgakov написал(а):
Гм, ну тогда будьте добры скажите сумму за работу?

Спустя 9 минут, 45 секунд (4.12.2011 - 19:40) kuzroman написал(а):
Цитата (Игорь_Vasinsky @ 4.12.2011 - 16:30)
simple php dom те в помощь ;)

Да собственно с DOM я знаком, мне конструкция сего html немного мешает, вот если бы описания были бы тоже в каком теге, то былобы проще, например:
<b>Жанр</b><div>Боевик</div>

в jquery выдернул бы так

$('.news b').each(function(){
if( $(this).text()=='Фильм' ) alert($(this).next().text())
});


А как сделать без тега, непойму.

Спустя 1 минута, 33 секунды (4.12.2011 - 19:42) kuzroman написал(а):
Цитата (bulgakov @ 4.12.2011 - 16:31)
Гм, ну тогда будьте добры скажите сумму за работу?

Миллион, достаточно?
Я не решения, а совет прошу.

Спустя 4 минуты, 7 секунд (4.12.2011 - 19:46) Игорь_Vasinsky написал(а):
Да тут много то не надо biggrin.gif

ты выдерни текст из div class="news"

все строки разбиваешь, разделитель <br/>

<b>Фильм</b> : Высоцкий. Спасибо, что живой<br/>

строки будут такие

<b>Фильм</b> : Высоцкий. Спасибо, что живой

видишь как разделить можно?потом тока <b> вырежешь

всё это в цикле, данные пихаешь в массив

Спустя 1 минута, 5 секунд (4.12.2011 - 19:47) bulgakov написал(а):
Ну если совета, то присмотритесь все таки к simplexml

Спустя 58 минут, 23 секунды (4.12.2011 - 20:45) alexbel2404 написал(а):
все эти библиотеки жрут нереально много оперы, особенно phpQuery) я все парсеры на регулярках делаю)

Спустя 18 минут, 37 секунд (4.12.2011 - 21:04) Игорь_Vasinsky написал(а):
alexbel2404
согласен, я поэтому 2й вариант ещё предложил

Спустя 1 час, 40 минут, 34 секунды (4.12.2011 - 22:45) alexbel2404 написал(а):
как-то делал с помощью phpQuery парсер выдачи гугла, так после парсинга 10 страниц улетало 1гб оперы) не знаю даже, для каких целей делали эту либу)

Спустя 11 часов, 49 минут, 10 секунд (5.12.2011 - 10:34) kuzroman написал(а):
спасибо всем за советы, сделал, с помощью библиотеки cURL, и jquery

Спустя 1 минута, 47 секунд (5.12.2011 - 10:36) kuzroman написал(а):
на jquery выглядит так

var resArr = new Array();
$('.news').children('div[id]').each(function (n){
resArr[n] = {};
$(this).children('b').each(function (){
resArr[n][$(this).text()] = $(this.nextSibling).text().replace(/\s*:\s*/, '');
});
});

Спустя 3 часа, 47 минут, 18 секунд (5.12.2011 - 14:23) kuzroman написал(а):
Парсю страницы в цикле, заганяю все в curl, от туда jquery нахожу нужные элементы и через ajax загоняю в базу.

в общем как то длинно кажется, но на деле не очень.

А озу Opera кушает также. Особых потерь не заметил.

Спустя 1 час, 17 минут, 6 секунд (5.12.2011 - 15:40) killer8080 написал(а):
В одну регулярку у меня не получилось
$text = ' 
<div class="news" >
<b>Фильм</b> : Высоцкий. Спасибо, что живой<br/>
<b>Год выхода</b>: 2011<br/>
<b>Жанр</b> : драма, биография<br/>
<b>Режиссер</b>: Петр Буслов<br/>
<b>В ролях:</b> Оксана Акиньшина, Сергей Безруков, Андрей Смоляков, Иван Ургант, Максим Леонидов, Андрей Панин, Владимир Ильин, Дмитрий Астрахан, Анна Ардова, Владимир Меньшов<br/>
<b>Выпущено</b>: Россия, Дирекция Кино<br/>
<b>Продолжительность</b>: 02:07:51<br/>
<b>Перевод</b>: Оригинал<br /><br/>
<b>Качество</b>: TS<br/>
<b>Размер</b>: 1.37 Gb<br/><br/>
<b>О фильме</b>: Действие фильма разворачивается в 1979 году, когда на одном из концертов Высоцкому становится плохо с сердцем. Он переживает клиническую смерть.
</div>
'
;
preg_match('#<div\s*class="news"\s*>(.*)</div>#isUu', $text, $match);
$text = $match[1];
preg_match_all('#\s*<b>(.*)\s*(?::\s*</\s*b>\s*|\s*</\s*b>\s*:)\s*(.*)\s*(?:<|$)#iuUs', $text, $match);
$out = array_combine($match[1], array_map('trim', $match[2]));
echo '<pre>'.htmlspecialchars(print_r($out, 1)).'</pre>';

Спустя 1 час, 12 минут (5.12.2011 - 16:52) kuzroman написал(а):
ох завидую я тем кто в регулярка разобрался, для меня это до сих пор головняк.

Спустя 5 минут, 26 секунд (5.12.2011 - 16:57) killer8080 написал(а):
kuzroman
да там не все так страшно, как кажется, главное в суть въехать smile.gif

Спустя 3 часа, 28 минут, 56 секунд (5.12.2011 - 20:26) alexbel2404 написал(а):
http://gskinner.com/RegExr/ тут можно учиться методом тыка)


_____________
kuzroman@list.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.