C#:从网站获取名单?

时间:2016-07-13 01:45:30

标签: c# html

有一个网站(确切地说是Evite),其中包含我创建的活动的与会者列表。有没有办法获得无序列表中包含的人员名单?我试图到达的实际信息是" Some Name"每个列表项的文本。 html看起来像这样:

<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 个答案:

答案 0 :(得分:1)

第一种方法是使用推荐的Html Agility Pack。

但是如果你想用其他方式,那么使用正则表达式呢?

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

答案 1 :(得分:0)

解决此问题我认为我们需要使用HTML Parser。有各种HTML Parser可用。

我使用了Html Agility Pack。

https://en.wikipedia.org/wiki/Comparison_of_HTML_parsers