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 敏捷包,但如果没有先找到列表,然后遍历多组子节点以最终找到我想要的内容,我就无法有效地获取名称列表。有没有更好的方法可以做到这一点?谢谢。
第一种方法是使用推荐的 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