使用HTML Agility Pack在HTML页面中获取URL

时间:2017-05-29 13:37:08

标签: c# html xpath html-agility-pack

我有这段代码:

    foreach (HtmlNode node in hd.DocumentNode.SelectNodes("//div[@class='compTitle options-toggle']//a"))
    {
        string s=("node:" + node.GetAttributeValue("href", string.Empty));
    }

我想在这样的标签中获取网址:

<div class="compTitle options-toggle">

    <a class=" ac-algo fz-l ac-21th lh-24" href="http://www.bestbuy.com">
               <b>Huawei</b> Products - Best Buy
    </a>
</div>

我想获得“http://www.bestbuy.com”和“华为产品 - 百思买”

我该怎么办?我的代码是否正确?

2 个答案:

答案 0 :(得分:1)

这是工作代码的一个例子

        var document = new HtmlDocument();
        document.LoadHtml("<div class=\"compTitle options-toggle\"><a class=\" ac-algo fz-l ac-21th lh-24\" href=\"http://www.bestbuy.com\"><b>Huawei</b> Products - Best Buy</a></div>");

        var tags = document.DocumentNode.SelectNodes("//div[@class='compTitle options-toggle']//a").ToList();

        foreach (var tag in tags)
        {
            var link = tag.Attributes["href"].Value; // http://www.bestbuy.com
            var text = tag.InnerText; // Huawei Products - Best Buy
        }

答案 1 :(得分:1)

结束双引号应该确定选择(它对我有用)。

获取纯文本

headers = {
  'HTTP_CONTENT_DISPOSITION': 'attachment; filename={}'.format(basename),
}

或者用粗体字表示华为字样,如下:

 string contentText = node.InnerText;