【发布时间】:2016-01-03 23:20:24
【问题描述】:
您好,我正在使用 nuget 包中的 html 敏捷包来抓取网页以获取页面上的所有 url。代码如下所示。然而,它在输出中返回给我的方式只是实际网站的扩展,而不是像http://www.foo/bar/foobar.com 这样的完整 url 链接。我将得到的只是“/foobar”。有没有办法使用下面的代码获取 url 的完整链接? 谢谢!
static void Main(string[] args)
{
List<string> linksToVisit = ParseLinks("https://www.facebook.com");
}
public static List<string> ParseLinks(string email)
{
WebClient webClient = new WebClient();
byte[] data = webClient.DownloadData(email);
string download = Encoding.ASCII.GetString(data);
HashSet<string> list = new HashSet<string>();
var doc = new HtmlDocument();
doc.LoadHtml(download);
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@href]");
foreach (var n in nodes)
{
string href = n.Attributes["href"].Value;
list.Add(href);
}
return list.ToList();
}
【问题讨论】:
-
仅供参考:ParseLinks 函数中变量名“email”的选择使得这无缘无故地令人困惑。结果,如果您在没有上下文的情况下阅读 erikscandola 的答案,那是没有意义的(附加带有 URL 的电子邮件 - 什么?)
标签: c# url web-scraping web-crawler html-agility-pack