我正在开发一个简单的facebook messenger客户端(不需要开发者帐户),到目前为止,我所取得的成就是获取所有消息 - 名称,预览,时间。我想要找到的是用户href链接
到目前为止,我有这个: MatchCollection name = Regex.Matches(
htmlText, "<div class=\"_l2\">(.*?)</div>");
MatchCollection preview = Regex.Matches(
htmlText, "<div class=\"_l3 fsm fwn fcg\">(.*?)</div>");
MatchCollection time = Regex.Matches(
htmlText, "<div class=\"_l4\">(.*?)</div>");
完全有效。
但是我尝试了一些我在这个网站上找到的东西,但似乎没什么用。 href类似于:<a class="_k_ hoverZoomLink" rel="ignore" href="
以&#34;结束。有人可以推荐我一篇文章,它实际上可以帮助我知道如何获得这个href。或者甚至比正则表达式更好的方法,但我真的更喜欢正则表达式:
for (int i = 0; i < name.Count; i++)
{
String resultName = Regex.Replace(name[i].Value, @"<[^>]*>", String.Empty);
String newName = resultName.Substring(0, resultName.Length - 5);
String resultPreview = Regex.Replace(preview[i].Value, @"<[^>]*>", String.Empty);
String s = time[i].Value;
int start = s.IndexOf("data-utime=\"") + 28;
int end = s.IndexOf("</abbr>", start);
String newTime = s.Substring(start, (end - start));
threads.Add(new Thread(newName, resultPreview, newTime, ""));
}
先谢谢。
答案 0 :(得分:0)
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlstring);
var link = doc.DocumentNode.SelectSingleNode("//a[@class='_k_ hoverZoomLink']")
.Attributes["href"].Value;
您也可以使用Linq而不是XPath
var link = doc.DocumentNode.Descendants("a")
.Where(a => a.Attributes["class"] != null)
.First(a => a.Attributes["class"].Value == "_k_ hoverZoomLink")
.Attributes["href"].Value;