Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   подскажите как отпарсить? (https://javascript.ru/forum/events/23749-podskazhite-kak-otparsit.html)

kuzroman 04.12.2011 20:27

подскажите как отпарсить?
 
Доброго времни суток, задача такая
есть:

<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 неважно
Контент менять нельзя!

kuzroman 04.12.2011 20:45

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

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

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


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

ksa 04.12.2011 21:06

Цитата:

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

Брать весь контент дивов class="news"... Искать нужное начало "<b>начало</b> :"... Затем вырезать нужный текст от начала до <br/>...

Вот такой вот алгоритм. :)

kuzroman 04.12.2011 21:30

блиииин точно, а я то голову ломаю, причем не первый раз на подобной задаче торможу. Спасибо огроменное.

Pavel M. 04.12.2011 21:39

можно пробежаться jquery по всем <b></b>
и брать соседний элемент, если там других тегов нет

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>demo</title>
  <script type='text/javascript' src='http://code.jquery.com/jquery-git.js'></script>
<script>
$(function(){
  var result = {};
  $('.news b').each(function () {
      result[$(this).text()] = $(this.nextSibling).text().replace(/\s*:\s*/, '');
  });
  // проверка
  alert(result['Фильм']);
  alert(result['Год выхода']);
  // ...
});

</script>
</head>
<body>
  <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>
</body>
</html>

kuzroman 05.12.2011 00:47

Да круто и удобно запихнуть все в асоцциативный массив.

не могу только описание nextSibling найти.
догадываюсь конечно что он делает, его то мне и нехватало для полного счастья, но где вы его нашли?

Pavel M. 05.12.2011 07:37

Цитата:

Сообщение от kuzroman
не могу только описание nextSibling найти.
догадываюсь конечно что он делает, его то мне и нехватало для полного счастья, но где вы его нашли?

http://beta.javascript.ru/tutorial/t...B8-nextsibling

Pattern 07.12.2011 22:35

Не знаю, кому как, а я бы наверное split-анул бы содержимое <div class="news">...</div> на br-ы, а потом перебирал по элементно созданные индексы. Если последовательность не изменна, значит 0 - название фильма, 1 - год, 2 - жанр и т.д.


Часовой пояс GMT +3, время: 13:55.