有一个网站(确切地说是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敏捷包,但是我无法在没有找到列表的情况下有效地获取名称列表,然后经历多组子节点以最终找到我正在查找的内容对于。有一个更好的方法吗?感谢。
答案 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。