2012-01-05 1 views
0

I(リンク、ポストコンテンツ、画像、日付、著者など)その投稿をthenextweb.com Webページをクロールするためのプログラムを設計していますc#でhtmlagilitypackを使用して単一のメソッドでさらに多くのタグにアクセスするには?

その1つのポストのHTMLのようにある:

<div class="media-data"> 

        <h4><a href="http://thenextweb.com/mobile/2012/01/05/nokia-reportedly-to-appoint-f-secure-founder-risto-siilasmaa-as-new-chairman/">Nokia to Name Risto Siilasmaa as New Chairman</a></h4> 
        <p class="article-meta"><a href="http://thenextweb.com/mobile/">TNW Mobile</a> &#8226; <a href="http://thenextweb.com/author/matt/" title="Posts by Matt Brian" rel="author">Matt Brian</a> &#8226; <span class="date" title="1325748846">January 5, 2012</span></a></p> 

        <p>Nokia is reportedly planning to nominate and name Risto Siilasmaa, founder of Finnish anti-virus and computer security F-Secure, as its new chairman by the end of the month, Finland&#8217;s Helsingin Sanomat reports&#8230;</p> 
       </div> 

これはホームページ上の次の15の記事のhtmlです。 は、そのコンテンツにアクセスするために私が使用している:

var webGet = new HtmlWeb(); 
    var document = webGet.Load(url); 
var infos = from info in document.DocumentNode.SelectNodes("//div[@class ='media-data']//h4//a") 
         select new 
         { 
          LinkURL = info.Attributes["href"].Value, 
          Text = info.InnerText 
         }; 

      lvLinks.DataSource = infos; 
      lvLinks.DataBind(); 

と著者の情報にアクセスするには、私が使用した日付など:私は、リストビューコントロールを使用していた

var infos = from info in document.DocumentNode.SelectNodes("//div[@class ='media-data']//p[@rel = 'author']") 
         select new 
         { 
          Author = info.InnerText 
         }; 

      lvLinks.DataSource = infos; 
      lvLinks.DataBind(); 

ASPページなどのデータを表示します<li> <%# Eval("Text") %> - <%# Eval("LinkUrl") %> </li>

が、私は一度にそれらのすべてにアクセスできないように... 認証用ませリンクごとに異なるコードを記述する必要があり、コンテンツおよびその他の私は方法をしたいですまたは日付など

私が欲しい任意のノードの<div class="media-data">... </div>タグの下に情報を書き込んで取得できる方法がありますか?

著者、日付情報を投稿リンク自体に添付することが非常に重要であることをご了承ください。私はそれをすることができません。

おかげ

+0

提供されるすべてのストーリー/トップニュースのRSSフィードを使用しない理由は? – kamranicus

+0

私はすべてのストーリーでやる必要があるいくつかのcutomizationがあります...それが私がウェブページからそれらをフェッチする必要がある理由です。 – ItsLockedOut

答えて

0

あなたはタイプ<div class="media-data">最初のノードを選択し、その中に必要なすべてのサブノードを選択できます。

var nodes = doc.DocumentNode.SelectNodes("//div[@class ='media-data']") 
    .Select(div => new 
    { 
     Link = div.SelectSingleNode("h4/a"), 
     Author = div.SelectSingleNode("//*[@rel='author']"), 
     Date = div.SelectSingleNode("//*[@class='date']"), 
     Content = div.SelectSingleNode("p[last()]") 
    }).Select(data => new 
    { 
     LinkURL = data.Link.Attributes["href"].Value, 
     Text = data.Link.InnerText, 
     Author = data.Author.InnerText, 
     Date = DateTime.Parse(data.Date.InnerText), 
     Content = data.Content.InnerHtml 
    }); 
関連する問題