2016-07-13 11 views
0

私が作成したイベントの出席者のリストを持つウェブサイトがあります。順序付けられていないリストに含まれる人の名前のリストを取得する方法はありますか?私がここにしようとしている実際の情報は、各リスト項目の "Some Name"テキストです。私はHTMLの敏捷性パックを使用してみましたが、私は効率的に最初のリストを見つけることのない名前のリストを取得することができませんでした、そして、子ノードの複数のセットを通過するC#:Webサイトから名前のリストを取得していますか?

<ul> 

    <li class="group-replies yes" 
     id="button_group_replies_yes"> 
     <h4 class="guest-list-group ">Yes (75)</h4> 
     <div class="arrow"></div> 
     <div class="guest-list-panel"> 


     <ul> 

      <li class="host " data-guestid=""> 
        <a class="profile-link" href="/profile/public/00B6AAQZXGK5ZYADLKASDKLR5OASKE"> 
    <div class="avatar small " 
     data-letters="AS" 
     data-disk="5" 
     data-key="00B6AAAWDGK5ZYAD3OEPAHCPASDWWQKE" 
     data-size="small" 

      href="javascript:void(0);" 

     > 
     <span class="avatar-badge"></span> 
    </div> 

    <div class="wrapper"> 
     <span class="username">Some Name 
       <span class="badge">Host</span> 
     </span> 
    </div> 
       </a> 
<div class="profile-hover"> 
    <div class="divet"></div> 
<div class="contents"> 
    <div class="meta"> 
     <p class="timestamp"> 
      <span class="left">Replied 135 days ago</span> 
     </p> 
     <p class="guests"> 
      <span class="adults"> 
        1 guest 
      </span> 
     </p> 
    </div> 
</div> 
</div> 
</li> 

:HTMLは次のようになります最終的に私が探していたものを見つけることができました。これを行うより良い方法はありますか?ありがとう。

+2

あなたは、あなたが後のデータを要求するAPIをページ所有者が提供しているかどうかを確認しようとしましたか?一般に、HTMLを介してデータ用のページをマイニングすることは、性質上非常に非効率的です。 – Claies

+2

HtmlAgilityPackを使用して、探していたデータを取得した場合は、それを成功と呼びます。 –

+1

eviteは、あなたがそれを可能にするAPIを提供しています。これをチェックしてください。 https://www.eventbrite.com/developer/v3/endpoints/events/#ebapi-get-events-id-attendees –

答えて

1

最初の方法が推奨されるHTML敏捷性パックを使用することになります。

しかし、他の方法を使いたいのであれば、正規表現の使用はどうですか?

string text = File.ReadAllText(@"test.html"); // Or any way getting your html string 
string pattern = "<span class=\"username\">(?<after>[\\w ]+)"; 
MatchCollection matches = Regex.Matches(text, pattern); 

for (int i = 0; i < matches.Count; i++) 
{ 
    Console.WriteLine("Username:" + matches[i].Groups["after"].ToString()); 
} 
関連する問題