23:52

PHP

Пожалуйста, помогите разобраться. Мне нужно распарсить страницу inter.ua/ru/tv/2010/09/13, у меня возникли трудности и вопросы. Буду очень благодарна за помощь и за ответы на эти самые вопросы.

читать дальше

Комментарии
15.10.2010 в 02:20

Пау-чок
< !--tv_schedule_day--> - это комментарий. Как часть дерева DOM он является элементом Comment, который в свою очередь есть ни что иное, как CharacterData. Иными словами, его получить через getElementsByTagName() невозможно, а если бы было возможно, это ничего бы не дало.

Вообще говоря, получить все элементы <dt> должно быть возможно и вызовом метода getElementsByTagName() самого документа, т.е. в данном случае $dom->getElementsByTagName('dt') по идее должно дать то, что надо (не знаю правда, насколько прямо DOM реализован в php).

Далее, у элементов <dd> и <dt> нету своих собственных типов в структуре DOM, все эти элементы являются экземплярами типа HTMLElement, для которого стандартом установлено, что его nodeValue должен быть всегда null. Т.е. чтобы получить текст, записанный в эти элементы, необходимо будет разбирать их дочерние элементы, смотреть, не равен ли их nodeType значению константы TEXT_NODE, и только тогда брать nodeValue.

Простой пример на яваскрипте:


Или, в виде одной строки (для вставки в поле адреса):


А вообще, какая задача стоит? Потому что судя по всему, с разбором тамошних dd'шек средствами DOM придётся повозиться неслабо.
15.10.2010 в 03:02

Задача в том, чтобы написать функцию на PHP, которая бы записывала в массив с именными ключами "time","name","ref","img","descr" время, название, ссылку на страницу с развернутым описанием, адрес картинки и само описание телепередачи со страницы inter.ua/ru/tv/2010/09/13.
Спасибо большое! Вы мне очень помогли! Кажется, теперь я знаю, как дальше делать!
15.10.2010 в 03:15

Пау-чок
Не за что. Рад, что смог помочь.
Задача, как мне кажется, не сложная, но весьма трудоёмкая. Удачи.