Выпарсить текст из div

Nikol

Client
Регистрация
28.04.2013
Сообщения
184
Благодарностей
11
Баллы
18
Пишу диплом, задал сбор материала.
И на одной странице моя регулярка споткнулась.
Mожет кто поможет.
Если просто оставить текст без тегов, то много лишнего. Подписи под картинками, ссылки и т.п. Фактически необходим текст в абзацах, выделенных тегами <p>text</p>, <p class="ingress">text</p>, <h2>text</h2>, <p><strong>text</strong>text</p>
Регулярка
Код:
(?<=(<p(.*"ingress")?>|<h2>)).*(?=(</p>|</h2>))
Спотыкается на абзаце, выделенном тегами <p><strong>text</strong>text</p>. Т.е. не дает результата парсинга. Получается обрезанный текст. Пример:
Код:
<p><strong>И.Л.:</strong> Я не политик, не военный, и мне сложно делать прогнозы.
                     </p>

Код страницы
Код:
                     <div class="module">
                        <div class="image img-w304"><img src="http://wscdn.bbc.co.uk/worldservice/assets/images/2014/03/05/140305120127_protest_crimea_304x171_afp.jpg" alt="Антивоенная акция в Москве" width="304" height="171"><p class="caption">В ходе антивоенной акции у Минобороны во вторник было задержано около 40 человек</p>
                        </div>
                     </div>
                     <p id="" class="ingress">Накануне вечером возле здания министерства обороны в центре Москвы прошла очередная акция против ввода российских войск в Крым. Среди участников митинга, задержанных полицией, была известный лингвист, старший научный сотрудник Института русского языка РАН Ирина Левонтина.</p>
                     <p>В интервью корреспонденту Русской службы Би-би-си <strong>Алексею Ильину</strong> Левонтина рассказала, что побудило ее участвовать в акции и почему подобные мероприятия в городах России так малочисленны.
                     </p>
                     <div class="module inline-contextual-links"><div class="list li-relatedlinks">
                        <h3 class="title">Статьи</h3>
                        <div class="content">
                           <ul>
                              <li class=" first teaser ts-headline body-disabled"><a href="/russian/russia/2014/03/140305_moscow_rally_arrests.shtml">В Москве задержаны 40 человек, выступивших против войны</a></li>
                              <li class="ts-headline body-disabled teaser"><a href="/russian/russia/2014/03/140305_russia_ukraine_diplomatic.shtml">США предлагают направить в Крым миссию наблюдателей</a></li>
                              <li class="ts-headline body-disabled teaser"><a href="/russian/russia/2014/03/140304_putin_presser_analysis.shtml">Путин говорит о мире, но сохраняет свободу рук</a></li>
                            
                            
                           </ul><p class="more-contextual-links"><a href="#more-contextual-links">Материалы по теме</a></p>
                        </div>
                     </div><div class="list li-relatedtopics">
                        <h2 class="title">Тэги</h2>
                        <div class="content">
                           <ul>
                              <li class="primary-topic"><a href="http://www.bbc.co.uk/russian/topics/ukraine" class="topic">Украина</a>,
                              </li>
                              <li><a href="http://www.bbc.co.uk/russian/topics/russia_opposition" class="topic">Оппозиция в России</a>,
                              </li>
                              <li><a href="http://www.bbc.co.uk/russian/topics/interviews" class="topic">Интервью</a>,
                              </li>
                              <li><a href="http://www.bbc.co.uk/russian/topics/editor_choice" class="topic">Выбор редактора</a></li>
                           </ul>
                        </div>
                     </div></div><p><em><strong>Би-би-си:</strong> Скажите, почему вы решили принять участие в этой акции?</em></p>
                     <p><strong>И.Л.:</strong> Я заканчивала школу, когда началась война в Афганистане, и, когда начали приходить цинковые гробы, это было очень-очень страшно. Как можно не понимать, что война, тем более война на территории другого государства, это крайнее средство, самое последнее, когда испробовано все остальное и ничего не помогает? Здесь же нет никаких причин для таких действий, а никакие другие средства испробованы не были. Поэтому это выглядит как захватническая война.
                     </p>
                     <p>Вчера на митинге скорее царило настроение уныния. Народу было мало, не больше ста человек, а полиции было много. Я немного опоздала к началу, но когда я пришла, то активных участников уже забрали.</p>
                     <p><em><strong>Би-би-си:</strong> Как вела себя полиция? Задержания были жесткими?</em></p>
                     <p><strong>И.Л.:</strong> Даже в советское время сложно было себе представить, что будут хватать и тащить в автозак людей, которые стоят с лозунгами "Миру - мир". Это какой-то полный абсурд притом, что несколько дней назад на улицах стояли люди с лозунгами "Танки на Киев" и призывами к войне, и их никто не трогал. Я-то вообще не держала никаких плакатов, а просто находилась там, но и меня тоже задержали.
                     </p>
                     <p><em><strong>Би-би-си:</strong> Сейчас в прессе часто звучит слово "война", однако никаких военных действий в Крыму не ведется.</em></p>
                     <div class="module">
                        <div class="box bx-quote">
                           <div class="content">
                              <div class="body">
                                 <blockquote>
                                    <p><span class="start-quote">"</span>Даже в советское время сложно было себе представить, что будут хватать и тащить в автозак людей, которые стоят с лозунгами "Миру - мир<span class="end-quote">"</span></p>
                                 </blockquote>
                              </div>
                           </div>
                        </div>
                     </div>
                     <p><strong>И.Л.:</strong> К счастью, люди пока не стреляют друг в друга, и им очень не хочется этого делать. Но на войне всегда бывают моменты затишья, когда воюющие стороны замирают, нацелившись друг на друга в ожидании боя. Боев пока нет, но в Крыму находятся вооруженные люди из другого государства. Можно назвать это другим словом: "вторжение". Я очень надеюсь, что эта ситуация как-то разрешится и до большой крови не дойдет.
                     </p>
                     <p><em><strong>Би-би-си:</strong> Противников ввода войск в Крым среди россиян довольно мало, и антивоенные акции немногочисленны. Почему так происходит?</em></p>
                     <p><strong>И.Л.:</strong> Это самое грустное. К сожалению, начинаешь понимать, что вокруг живут люди, которых так легко убедить в необходимости военных действий. Раньше словосочетание "победоносная война с Украиной" воспринималась как символ чего-то абсурдного, чего быть не может. А сегодня так легко оказалось с помощью государственной пропаганды сделать так, чтобы хорошие, очень добрые по жизни люди поддержали ввод войск в соседнюю страну.
                     </p>
                     <p><em><strong>Би-би-си:</strong> Как, по вашему мнению, будет развиваться ситуация в Крыму?</em></p>
                     <div class="module">
                        <div class="box bx-quote">
                           <div class="content">
                              <div class="body">
                                 <blockquote>
                                    <p><span class="start-quote">"</span>Раньше словосочетание "победоносная война с Украиной" воспринималась как символ чего-то абсурдного, чего быть не может<span class="end-quote">"</span></p>
                                 </blockquote>
                              </div>
                           </div>
                        </div>
                     </div>
                     <p><strong>И.Л.:</strong> Я не политик, не военный, и мне сложно делать прогнозы. Возможно, Крым все-таки присоединят в какой-то форме к России, либо он станет полуфиктивным государством, которое фактически будет частью России. Но это же будет не решением проблем, а только их началом. Очень страшно было бы получить рядом со своими границами еще один Афганистан.
                     </p>
                     <p><em><strong>Би-би-си:</strong> Если вывести оттуда российские войска, то ситуация улучшится?</em></p>
                     <p><strong>И.Л.:</strong> Там и не было такой ситуации, которая предполагала бы введение войск. И результаты референдума о статусе Крыма были бы более объективными, если бы его проводили без ввода войск. В конце концов, есть дипломатические меры, культурный обмен - много других способов для решения проблем. Многие ссылаются на то, что всем жителям Украины якобы хотят запретить говорить по-русски, но решать проблему языка при помощи БТРов - это довольно странно, согласитесь.
                     </p>
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
ну абзацы накидали, а так не лучше?
(?<=<p[^\n]*">)[\w\W]*?(?=</p)|(?<=<h2.*>)[\w\W]*?(?=</h2)
 

Nikol

Client
Регистрация
28.04.2013
Сообщения
184
Благодарностей
11
Баллы
18
Благодарю Lexicon, но приведенная выше регулярка парсит еще меньше текста, чем составленная мной. Есть еще кто-то на форуме, кто хорошо разбирается в регулярках?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
<p(\>|.*?\"ingress\"\>)[\w\W]*?</p>
 
  • Спасибо
Реакции: Nikol

Nikol

Client
Регистрация
28.04.2013
Сообщения
184
Благодарностей
11
Баллы
18
Ростоникс благодарю. Здорово все работает.
 

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