C#:从网站获取名称列表

本文关键字:列表 获取 网站 | 更新日期: 2023-09-27 17:56:44

有一个网站(确切地说是Evite),其中包含我创建的活动的与会者列表。有没有办法获取无序列表中包含的人员姓名列表?我试图在这里获取的实际信息是每个列表项中的"一些名称"文本。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 敏捷包,但如果没有先找到列表,然后遍历多组子节点以最终找到我想要的内容,我就无法有效地获取名称列表。有没有更好的方法可以做到这一点?谢谢。

C#:从网站获取名称列表

第一种方法是使用推荐的 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());
}

解决这个问题,我认为我们需要使用 HTML 解析器。有各种可用的HTML解析器。

我使用了 Html Agility Pack。

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