Как сделать регулярку для субэлементов?

VladimirVladimir

Пользователь
Регистрация
02.10.2014
Сообщения
57
Благодарностей
2
Баллы
8
Добрый день. Нужна помощь в написании регулярки. Допустим, у нас такая страница. Задача спарсить все ссылки которые находятся только в подменю (.sub-menu1 и .sub-munu2), ссылки из хедара и футера должны игнорироваться.

<div class="menu">
<a href="/item1">item1</a>
<a href="/item2">item2</a>
<a href="/item3">item3</a>
</div>

<div container="main">

<div class="sub-menu1">
<a href="/item4">item4</a>
<a href="/item5">item5</a>
<a href="/item6">item6</a>
</div>

<div class="sub-menu2">
<a href="/item7">item7</a>
<a href="/item8">item8</a>
<a href="/item9">item9</a>
</div>
</div>

<div class="footer">
<a href="/item1">item1</a>
<a href="/item2">item2</a>
<a href="/item3">item3</a>
</div>
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

VladimirVladimir

Пользователь
Регистрация
02.10.2014
Сообщения
57
Благодарностей
2
Баллы
8
Спасибо за ответ, а можно ссылку на манула, где объясняется, как составлять регвыражения. Дело в то, что я набросал примерный html код, на самом деле он выглядит так:


<article style="" class="content__rubric content__all-rubrics" itemscope="" itemtype="https://schema.org/DataCatalog">


<ul class="all-rubrics columns__list columns__list_3">
<li class="col__item all-rubrics__item">
<a href="/sport-i-fitnes" class="all-rubrics__item__title">Спорт и фитнес</a>
<ul class="all-rubrics__sublist">
<li><a href="/basketbol" title="Баскетбол">Баскетбол</a></li>
<li><a href="/bolelshchiki" title="Болельщики">Болельщики</a> </li>
</ul>


<li class="col__item all-rubrics__item">
<a href="/kvartira-i-dacha" class="all-rubrics__item__title">Квартира и дача</a>
<ul class="all-rubrics__sublist">
<li><a href="/dizayn-dachi" title="Дизайн дачи">Дизайн дачи</a></li>
<li><a href="/dizayn-kvartiry" title="Дизайн">Дизайн </a> </li>
</ul>

Задача собрать ссылки которые присутствуют в классе (<ul class="all-rubrics__sublist">). Я примерно понимаю, что Вы написали в вашей регулярке, но не до конца )
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
  • Спасибо
Реакции: VladimirVladimir

VladimirVladimir

Пользователь
Регистрация
02.10.2014
Сообщения
57
Благодарностей
2
Баллы
8

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Спасибо за ответ, а можно ссылку на манула, где объясняется, как составлять регвыражения. Дело в то, что я набросал примерный html код, на самом деле он выглядит так:


<article style="" class="content__rubric content__all-rubrics" itemscope="" itemtype="https://schema.org/DataCatalog">


<ul class="all-rubrics columns__list columns__list_3">
<li class="col__item all-rubrics__item">
<a href="/sport-i-fitnes" class="all-rubrics__item__title">Спорт и фитнес</a>
<ul class="all-rubrics__sublist">
<li><a href="/basketbol" title="Баскетбол">Баскетбол</a></li>
<li><a href="/bolelshchiki" title="Болельщики">Болельщики</a> </li>
</ul>


<li class="col__item all-rubrics__item">
<a href="/kvartira-i-dacha" class="all-rubrics__item__title">Квартира и дача</a>
<ul class="all-rubrics__sublist">
<li><a href="/dizayn-dachi" title="Дизайн дачи">Дизайн дачи</a></li>
<li><a href="/dizayn-kvartiry" title="Дизайн">Дизайн </a> </li>
</ul>

Задача собрать ссылки которые присутствуют в классе (<ul class="all-rubrics__sublist">). Я примерно понимаю, что Вы написали в вашей регулярке, но не до конца )
что в этом коде такого особенного, что нужно было прятать его за другим?
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Эх, не хочется пугать парня... Для целей поиска элементов внутри других элементов в HTML коде правильнее будет использовать xpath . Но его стоит изучать только если такие задачи часто будут появляться.
 
  • Спасибо
Реакции: VladimirVladimir

VladimirVladimir

Пользователь
Регистрация
02.10.2014
Сообщения
57
Благодарностей
2
Баллы
8
что в этом коде такого особенного, что нужно было прятать его за другим?
хотел упростить задачу, тем кто отвечает на вопрос) Для меня важно было получить понимание, как извлечь подменю, а где это применять это уже в принципе не важно.
 

VladimirVladimir

Пользователь
Регистрация
02.10.2014
Сообщения
57
Благодарностей
2
Баллы
8
Не могу понять в чем проблема. Составил регулярное выражение в конструкторе регвыражений, нажимаю тест, получаю, то что хотел. http://prntscr.com/gt4kof . Затем копирую рег. выражение, выполняю в проекте http://prntscr.com/gt4mw1 . Проблема в том, что в переменную записывается только первая ссылка, хотя на тесте регулярки все работало норм. Вот что попадает в переменную http://prntscr.com/gt4nzc
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Во втором скрине чекбокс надо на "все" поставить. и в список собирать. Погоняй какие-то курсы по зенке. А то надо знать такие азы.
 

VladimirVladimir

Пользователь
Регистрация
02.10.2014
Сообщения
57
Благодарностей
2
Баллы
8
Во втором скрине чекбокс надо на "все" поставить. и в список собирать. Погоняй какие-то курсы по зенке. А то надо знать такие азы.
Я использовал и кнопку "ВСЕ", и использовал список, только после этого написал на форум ) Видимо, у меня руки кривые, сейчас поставил этот чекбокс, указал список все заработало. Спасибо за потраченное вами время.
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)