2012-08-13 135 views
0

我试图从href中提取链接。 <a class="p_l" href="" id="0" target="_blank"> 这是在页面查看源中可见的内容,但是当我使用萤火虫检查时,href将包含http://home.website.com/preview/preview?uname=3eadsf132sdas。我试过使用htmlagilitypack但href返回null。如何提取href中的链接。如何获取href内容

+1

这是因为空的'href'的意思是“无论当前的网址是什么”。 Agility Pack无法知道您从何处获取HTML。 – Jon 2012-08-13 10:58:02

+0

是否可以提取链接。如何获得href中的链接。 – Maddy 2012-08-13 11:03:13

+0

@Maddy重申第一位评论者所说的话,没有什么可以提取的。 Firebug向您展示* Web浏览器*所了解的内容。 HTML敏捷包只知道* HTML源*知道什么。浏览器知道它从何处加载HTML,而Html Agility Pack则没有。而不是看着萤火虫,看看“查看来源”。这就是HAP实际所看到的。 – 2012-08-13 11:39:41

回答

1

如果你还没有尝试过这种方式比请尝试这种方式

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); 

     htmlDoc.OptionFixNestedTags=true; 

     htmlDoc.Load(filePath); 

foreach(HtmlNode link in htmlDoc.DocumentElement.SelectNodes("//a[@href"]) 
{ 
    if(link != null) 
    { 
     if(link["href"] != null) 
     { 
     HtmlAttribute att = link["href"]; 
     var url = att.Value; 
     } 
    } 
+0

谢谢HatSoft,但是DocumentElement发出错误,如果我使用DocumentNode,那么它会给出错误,说我们不能使用节点作为数组。 – Maddy 2012-08-13 11:26:55

+0

@Maddy DocumentElement抛出的错误是什么,我一直都在使用它 – HatSoft 2012-08-13 14:19:16

1

你可以尝试不同的东西,喜欢把自己使用WebRequest类的HTML内容(见here如何)。

如果href不包含任何链接,这可能意味着它正在使用Javascript或其他编程语言填充以添加动态内容。如果你有权访问脚本,那么你可能有一个很小的机会获得链接,但不这么认为。