首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用HtmlAgilityPack - C#提取完整的url

如何使用HtmlAgilityPack - C#提取完整的url
EN

Stack Overflow用户
提问于 2011-10-14 04:52:51
回答 2查看 9.4K关注 0票数 8

好的,在下面的方法中,它只提取引用的url,如下所示

解压代码:

代码语言:javascript
运行
复制
foreach (HtmlNode link in hdDoc.DocumentNode.SelectNodes("//a[@href]"))
{
    lsLinks.Add(link.Attributes["href"].Value.ToString());
}

url代码

代码语言:javascript
运行
复制
<a href="Login.aspx">Login</a>

提取的url

代码语言:javascript
运行
复制
Login.aspx

但我想获得浏览器解析后的实际链接

代码语言:javascript
运行
复制
http://www.monstermmorpg.com/Login.aspx

我可以检查url是否包含http,如果不包含,则添加域值,但在某些情况下可能会导致一些问题,我认为这不是一个非常明智的解决方案。

c# 4.0、HtmlAgilityPack.1.4.0

EN

Stack Overflow用户

回答已采纳

发布于 2011-10-14 05:01:50

假设你有原始的url,你可以像这样组合解析后的url:

代码语言:javascript
运行
复制
// The address of the page you crawled
var baseUrl = new Uri("http://example.com/path/to-page/here.aspx");

// root relative
var url = new Uri(baseUrl, "/Login.aspx");
Console.WriteLine (url.AbsoluteUri); // prints 'http://example.com/Logon.aspx'

// relative
url = new Uri(baseUrl, "../foo.aspx?q=1");
Console.WriteLine (url.AbsoluteUri); // prints 'http://example.com/path/foo.aspx?q=1'

// absolute
url = new Uri(baseUrl, "http://stackoverflow.com/questions/7760286/");
Console.WriteLine (url.AbsoluteUri); // prints 'http://stackoverflow.com/questions/7760286/'

// other...
url = new Uri(baseUrl, "javascript:void(0)");
Console.WriteLine (url.AbsoluteUri); // prints 'javascript:void(0)'

注意AbsoluteUri的使用,而不是依赖于ToString(),因为ToString解码URL (使其更“人类可读”),这是,而不是通常是您想要的。

票数 16
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7760286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档