2013-11-08 6 views
1

Я пытаюсь получить все между Div тегами на нашем форуме, чтобы обработать их в программе, извлеченная страница приходит так:Как получить все символы между HTML-тегами

<div id="post_message_1234567"> 

     <a href="http://blahblah.com" target="_blank"><img src="http://blahblah.com/iuhiuhuh.gif" border="0" alt="" /></a> <br /> 
<br /> 
jofjhoeifjoiwefjoweifj<br /> 
blahblahblahpokpoekpfowef<br /> 
<br /> 
khfiudhfisduhfiusdfh<br /> 
<br /> 
<a href="http://blah.com/img.php?image=trepazoid.jpg" target="_blank"><img src="http://blah.com/loc367/euhfwieufhwifuhiwefuh.jpg" border="0" alt="" /></a><br /> 
<br /> 
one<br /> 
two*three<br /> 
87879879 nuts<br /> 
11 bananas<br /> 
<br /> 
<a href="hjoiwjhfoweif.dat" target="_blank">Monkeys</a> 
     </div> 

Я пытался с этим регулярным выражением кода, но это не помогло:

string find = "\\b<div id=\"post_message_\\d+\">\\n*.*</div>\\b"; 

Можете ли вы помочь мне, чтобы получить все между <div id="post_message_1234567"> и </div>?

+0

Добавьте тильды вокруг ваших HTML-тегов в свои некодовые блоки текста в сообщении. Они не появляются в вашем посте без них. – sab669

+1

Вы можете использовать HtmlAgilityPack – lordkain

+0

большое спасибо за предложение lordkain – user2970136

ответ

1

Как об этом:

@"<div id=""post_message_\d+"">(?<Content>(\r|\n|.)*)</div>" 

Пример:

string searchString = @"<div id=""post_message_1234567""> 

     <a href=""http://blahblah.com"" target=""_blank""><img src=""http://blahblah.com/iuhiuhuh.gif"" border=""0"" alt="""" /></a> <br /> 
<br /> 
jofjhoeifjoiwefjoweifj<br /> 
blahblahblahpokpoekpfowef<br /> 
<br /> 
khfiudhfisduhfiusdfh<br /> 
<br /> 
<a href=""http://blah.com/img.php?image=trepazoid.jpg"" target=""_blank""><img src=""http://blah.com/loc367/euhfwieufhwifuhiwefuh.jpg"" border=""0"" alt="""" /></a><br /> 
<br /> 
one<br /> 
two*three<br /> 
87879879 nuts<br /> 
11 bananas<br /> 
<br /> 
<a href=""hjoiwjhfoweif.dat"" target=""_blank"">Monkeys</a> 
     </div>"; 
Regex regex = new Regex(@"<div id=""post_message_\d+"">(?<Content>(\r|\n|.)*)</div>"); 
Match match = regex.Match(searchString); 
bool success = match.Success; // True 
string content = match.Groups["Content"].Value; 

content теперь содержит все между тегами, которые вы хотите.

+0

большое спасибо Бен, он работал как шарм. Я хотел бы задать еще один вопрос, поскольку на некоторых страницах есть много сообщений между

tags as I mentioned above how can I get them separately ? because this code gets the last
в качестве конечной точки – user2970136

+0

Было бы трудно сказать, не видя больше источника страницы. Я использовал regex для анализа html раньше, когда это было самое простое решение, но похоже, что вы можете рассмотреть HtmlAgilityPack (как упоминалось в комментариях к вашему вопросу). Лично мне очень нравится ScrapySharp (расширение для HtmlAgilityPack), когда все выходит за рамки простого регулярного выражения. Взгляните сюда: http://stackoverflow.com/questions/18407681/best-way-to-scrape-source-code-from-a-webpage/18407718#18407718 –

+0

большое спасибо за вашу помощь – user2970136

Смежные вопросы