我还没有找到适用于我的解决方案,尽管人们确实在SO上遇到了类似的问题。
我有以下代码:
private static ArrayList GetURLS(string url)
{
ArrayList alLinks = new ArrayList();
HtmlDocument doc = new HtmlWeb().Load(url);
var linkTags = doc.DocumentNode.Descendants("link");
var linkedPages = doc.DocumentNode.Descendants("a")
.Select(a => a.GetAttributeValue("href", null))
.Where(u => !string.IsNullOrEmpty(u))
.Where(u => !u.StartsWith("#")); // Don't include empty links and those that start with a #
foreach (string links in linkedPages)
{
if (IsValidUri(links))
{
if (!alLinks.Contains(links)) alLinks.Add(links.ToLower());
}
}
return alLinks;
}
网络抓取工具 - 无处不在,只要它碰到非英语网站就会立即犯规。而不是(在日语页面中)将URL作为汉字/平假名等获取它返回%3e unicode类型编码。这很好,因为我们也可以抓住这些。
然而,最终用户面临着可怕的网址!
所以,问题是:
答案 0 :(得分:1)
班级System.Web.HttpUtility
有一个方法UrlDecode
来完成此任务:
var decoded = System.Web.HttpUtility.UrlDecode(links.ToLower());
alLinks.Add(decoded);
示例:
var url = "http://en.wikipedia.org/wiki/%E6%BC%A2%E5%AD%97";
Console.WriteLine(System.Web.HttpUtility.UrlDecode(url));
// http://en.wikipedia.org/wiki/漢字