2016-11-03 6 views
0

記事タグと一致するように正規表現を作成してすべてのテキストを取得しようとしています。ここで 記事タグと一致する正規表現を作成できません

は私が次Regex-

<article (.*?)</article> 

(?:<article>)(.*?)(?:</article>) 
それらの

どれも機能していないしなさいヘルプを試してみましたこれまでの記事tag.So内にあるすべてのものを必要とするタグ -

<article id="post-82" class="post-82 post type-post status-publish format-standard hentry category-publishing"> 
     <div class="entry-content clearfix">   
         <div class="abh_box abh_box_up abh_box_drop-down"><ul class="abh_tabs"> <li class="abh_about abh_active"> 
<p>With India playing host,</p> 
    <footer class="entry-meta-bar clearfix"><div class="entry-meta clearfix"> 
       <span class="comments"><a href="http://www.test.com/blog/emerging-markets/#respond">No Comments</a></span>   

     </div></footer> 
    </article> 

私の記事であります。

+0

これは、正規表現がHTMLを解析するためのツールとして間違っているからです。あなたは完璧に動作することはありません。 HTMLパーサー(HtmlAgilityPackが動作)を使用して勝利します。 – spender

答えて

1

HTMLの解析にregexを使用しないでください。 Htmlの敏捷性パックのように使用するHTMLパーサ

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(htmlContent); 

var result = doc.DocumentNode.SelectNodes("article").FirstOrDefault(); 
+0

なぜdownvote? – mybirthname

0

あなたは、この正規表現を試すことができます。

<[article][^>]*>((.|\n)*?)<\/article> 

https://regex101.com/r/oOJ9bt/2

+0

動作しません。 –

+0

ここで動作しています。https://regex101.com/r/oOJ9bt/2 –

0

あなたはこのような何かのために正規表現を使用しないと、あなたがする必要はありませんXMLパーサーをロードする。含まれているHTMLの要素には.getAttribute("innerHTML")を使用してください。

たとえば、IDで提供されたHTMLの記事要素のみを取得します。

System.out.println(driver.findElement(By.id("post-82")).getAttribute("innerHTML")); 

これは、ページのすべての記事のHTMLを取得します。

for (WebElement article : driver.findElements(By.tagName("article"))) 
{ 
    System.out.println(article.getAttribute("innerHTML")); 
} 
関連する問題