Выборка тегов со страницы

Все вопросы касающиеся использования
программы можно задать здесь
Ответить
OlegGraf
Сообщения: 76
Зарегистрирован: 04 ноя 2011, 01:01

Выборка тегов со страницы

Сообщение OlegGraf » 06 окт 2013, 18:02

Как получить тексты всех тегов H1 страницы в массив?
Есть что то подобное DOM интерфейса, например (//h1/@text)?
Последний раз редактировалось OlegGraf 07 окт 2013, 14:38, всего редактировалось 1 раз.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3057
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Выборка тегов со страницы

Сообщение bigfozzy » 07 окт 2013, 11:43

echo $element->get_all_inner_texts("<br>");, а дальше в цкиле проверять тэг элемента через $elemnt->get_tag_by_number

OlegGraf
Сообщения: 76
Зарегистрирован: 04 ноя 2011, 01:01

Re: Выборка тегов со страницы

Сообщение OlegGraf » 07 окт 2013, 14:32

Очень не удобно, куча лишних движений и кода.
Нельзя ли сделать пару функций, например:
$elemnt->get_all_by_tag('H1'); чтобы получить все теги H1
$element->get_all_inner_texts_by_tag("H1"); чтобы получить все тексты тегов H1
Или подключить интерфейс DOM http://www.php.net/manual/en/book.dom.php с указанием конструкций типа /html/body[@class='ltr']/div...
Например $element->get_all_by_dom("//html/body[@class='ltr']/h1");
Либо интерфейс наподобие jQuery

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3057
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Выборка тегов со страницы

Сообщение bigfozzy » 07 окт 2013, 14:53

Добавили объекты $h1-$h6.

Будет еще возможность получать массив объектов XHEInterface.
Например $input->get_all_by_name() или $anchor->get_all_by_inner_texts();

Также будет $elemуnt->get_all_by_tag('H1');

и

$elemnt->get_all_by_xml($xml); - можно задать будет сразу несколько условий
Или подключить интерфейс DOM http://www.php.net/manual/en/book.dom.php с указанием конструкций типа /html/body[@class='ltr']/div...
Например $element->get_all_by_dom("//html/body[@class='ltr']/h1");
Либо интерфейс наподобие jQuery
- а про это напишите как бы вы хотели это видеть ?

OlegGraf
Сообщения: 76
Зарегистрирован: 04 ноя 2011, 01:01

Re: Выборка тегов со страницы

Сообщение OlegGraf » 07 окт 2013, 15:51

Есть стандартные DOM конструкции поиска элемента в коде основанные на библиотеке php http://www.php.net/manual/en/book.dom.php
Пример я уже дал.
Например $element->get_all_by_dom("//div[@class='ltr']/h1"); выбирает все теги h1 в div с классом ltr. А далее доп функцией обрабатывать элемены найденных тегов
То есть, нужна функция которая будет принимать в параметр путь DOM и выдавать в массив найденное.
Пути можно например смотреть в ferebug в firefox

По поводу jQuery, там еще проще.
Например нужно найти все вложенные элементы без id и классов strong

Код: Выделить всё

<div class="class">ываыва ыва ыва ыва <span>ыва sdfds<strong>345</strong> вап вапвап</span> вапвапвап</div>
$elemуnt->get_all_by_jquery('div.class span strong');
Последний раз редактировалось OlegGraf 07 окт 2013, 16:06, всего редактировалось 1 раз.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3057
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Выборка тегов со страницы

Сообщение bigfozzy » 07 окт 2013, 15:52

Спасибо

OlegGraf
Сообщения: 76
Зарегистрирован: 04 ноя 2011, 01:01

Re: Выборка тегов со страницы

Сообщение OlegGraf » 23 окт 2013, 22:13

Все таки возвращаюсь к главному вопросу
То что вы сделали DOM функции для каждого html тега, мое мнение, не эффективно.
По вашей логике вам нужно прописать все теги и постоянно добавлять новые, которые будут появляться.
Проще было создать общие функции
Например:
$webpage->get_all_tag('div'); Получить в массив все div страницы как обьекты
$webpage->get_all_tag_by_attr('div', 'name'='test'); Получить в массив все div с атрибутом name=test
$webpage->get_all_tag_by_attr('div', 'class'='test'); Получить в массив все div с атрибутом class=test
$webpage->click_by_tag_by_attr('div', 'class'='test')->click(); Кликнуть по div с атрибутом class=test
$webpage->get_all_tag('div')->html; Получить в массив html всех тегов div страницы

Дальше парсить выборку глубже если нужно, например :
$array=$webpage->get_all_tag('div'); Получить в массив все div страницы
$result_array=$element->get_all_tag($result_array[0], 'h1')->html(); Получить в массив html всех h1 тега div под номером 1
$result_array=$element->click_by_tag($result_array[0], 'h1')->click(); Кликнуть по h1 тега div под номером 1
$result_array=$element->click_by_tag_by_attr($result_array[0], 'h1', 'class'='test')->click(); Кликнуть по h1 у которого class=test тега div под номером 1
и так далее
Данный функционал покроет все теги разом.

Вы предложили:
echo $element->get_all_inner_texts("<br>");
выводит тексты но не массив
а дальше в цкиле проверять тэг элемента через $elemnt->get_tag_by_number
Как проверять?

Как сейчас получить html всех html5 тегов страницы, например: <article> <aside> <nav> <section> и т.д. особенно если теги мигрируют в верстке, у них нет имени, класса, id и содержимое их часто меняется?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3057
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Выборка тегов со страницы

Сообщение bigfozzy » 24 окт 2013, 10:25

Принято, будут расширения в этом направлении, исходя из DOM Interface

OlegGraf
Сообщения: 76
Зарегистрирован: 04 ноя 2011, 01:01

Re: Выборка тегов со страницы

Сообщение OlegGraf » 24 окт 2013, 14:02

Ок, спасибо, жду с нетерпением
А как быть сейчас с моим вопросом, можете дать код?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3057
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Выборка тегов со страницы

Сообщение bigfozzy » 24 окт 2013, 14:57

Вот код получения текстов элементов по тэгам :

Код: Выделить всё

// текcты элементов по тэгам
for ($i=0;$i<$element->get_count();$i++)
{
   $tag=$element->get_tag_by_number($i);   
	if ( $tag=="ARTICLE")
		echo "article:".$element->get_inner_text_by_number($i)."<br>";
	else if ( $tag=="ASIDE")
		echo "aside:".$element->get_inner_text_by_number($i)."<br>";
	else if ( $tag=="A")
		echo "a:".$element->get_inner_text_by_number($i)."<br>";
}
Я правильно понял вопрос ?

OlegGraf
Сообщения: 76
Зарегистрирован: 04 ноя 2011, 01:01

Re: Выборка тегов со страницы

Сообщение OlegGraf » 24 окт 2013, 15:13

Да, верно. Спасибо.

sas
Сообщения: 75
Зарегистрирован: 24 апр 2011, 18:46

Re: Выборка тегов со страницы

Сообщение sas » 09 ноя 2013, 22:41

скажите а селектор
$element->get_all_by_jquery('div.class span strong');
с какой версии работает?

OlegGraf
Сообщения: 76
Зарегистрирован: 04 ноя 2011, 01:01

Re: Выборка тегов со страницы

Сообщение OlegGraf » 09 ноя 2013, 22:49

Функции $element->get_all_by_jquery к сожалению вообще не существует.
Это были всего лишь мои мысли и пожелания для разработчиков

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3057
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Выборка тегов со страницы

Сообщение bigfozzy » 10 ноя 2013, 20:54

Скоро будет, этот пункт в топе туду листа я поставил. Может даже в следующей версии или через одну.

Ответить