2016-07-13 9 views
0

Es gibt eine Website (Evite um genau zu sein), die eine Liste von Teilnehmern für eine Veranstaltung, die ich erstellt habe, hat. Gibt es eine Möglichkeit, eine Liste der Namen von Personen zu erhalten, die in einer ungeordneten Liste enthalten sind? Die eigentliche Information, die ich hier bekommen möchte, ist der "Some Name" -Text von jedem Listeneintrag. Die html sieht ungefähr so ​​aus:C#: Eine Liste von Namen von einer Website erhalten?

<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> 

Ich habe versucht HTML Agilität Pack, aber ich konnte nicht effizient die Liste der Namen erhalten, ohne zuerst die Liste zu finden, dann mehrere Sätze von untergeordneten Knoten durchlaufen um endlich zu finden, wonach ich gesucht habe. Gibt es einen besseren Weg, dies zu tun? Vielen Dank.

+2

Haben Sie versucht zu sehen, ob die Seitenbesitzer eine API zur Abfrage der Daten bereitstellen, nach denen Sie suchen? Im Allgemeinen ist das Mining einer Seite für Daten über das HTML sehr ineffizient. – Claies

+2

Wenn Sie HtmlAgilityPack verwendet haben und die Daten erhalten haben, nach denen Sie gesucht haben, würde ich es als Erfolg bezeichnen. –

+1

evite bietet eine API, mit der Sie das tun können. Sieh dir das an. https://www.eventbrite.com/developer/v3/endpoints/events/#ebapi-get-events-id-attendees –

Antwort

1

Der erste Weg wird mit Html Agility-Pack sein, die empfohlen wird.

Aber wenn Sie einen anderen Weg verwenden möchten, was ist mit der Verwendung von Regex?

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()); 
} 
Verwandte Themen