Выборка тегов со страницы
Выборка тегов со страницы
Как получить тексты всех тегов H1 страницы в массив?
Есть что то подобное DOM интерфейса, например (//h1/@text)?
Есть что то подобное DOM интерфейса, например (//h1/@text)?
Последний раз редактировалось OlegGraf 07 окт 2013, 14:38, всего редактировалось 1 раз.
Re: Выборка тегов со страницы
echo $element->get_all_inner_texts("<br>");, а дальше в цкиле проверять тэг элемента через $elemnt->get_tag_by_number
Re: Выборка тегов со страницы
Очень не удобно, куча лишних движений и кода.
Нельзя ли сделать пару функций, например:
$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
Нельзя ли сделать пару функций, например:
$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
Re: Выборка тегов со страницы
Добавили объекты $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); - можно задать будет сразу несколько условий
Будет еще возможность получать массив объектов 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
Re: Выборка тегов со страницы
Есть стандартные 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
$elemуnt->get_all_by_jquery('div.class span strong');
Пример я уже дал.
Например $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>
Последний раз редактировалось OlegGraf 07 окт 2013, 16:06, всего редактировалось 1 раз.
Re: Выборка тегов со страницы
Спасибо
Re: Выборка тегов со страницы
Все таки возвращаюсь к главному вопросу
То что вы сделали 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
и так далее
Данный функционал покроет все теги разом.
Вы предложили:
Как сейчас получить html всех html5 тегов страницы, например: <article> <aside> <nav> <section> и т.д. особенно если теги мигрируют в верстке, у них нет имени, класса, id и содержимое их часто меняется?
То что вы сделали 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 и содержимое их часто меняется?
Re: Выборка тегов со страницы
Принято, будут расширения в этом направлении, исходя из DOM Interface
Re: Выборка тегов со страницы
Ок, спасибо, жду с нетерпением
А как быть сейчас с моим вопросом, можете дать код?
А как быть сейчас с моим вопросом, можете дать код?
Re: Выборка тегов со страницы
Вот код получения текстов элементов по тэгам :
Я правильно понял вопрос ?
Код: Выделить всё
// тек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>";
}
Re: Выборка тегов со страницы
Да, верно. Спасибо.
Re: Выборка тегов со страницы
скажите а селектор
$element->get_all_by_jquery('div.class span strong');
с какой версии работает?
$element->get_all_by_jquery('div.class span strong');
с какой версии работает?
Re: Выборка тегов со страницы
Функции $element->get_all_by_jquery к сожалению вообще не существует.
Это были всего лишь мои мысли и пожелания для разработчиков
Это были всего лишь мои мысли и пожелания для разработчиков
Re: Выборка тегов со страницы
Скоро будет, этот пункт в топе туду листа я поставил. Может даже в следующей версии или через одну.