1

HTMLドキュメントのURLを使用してrel="canonical"タグを解析するにはどうすればよいですか?

ここでURLを見つけたい:

<link rel="canonical" href="http://stackoverflow.com/questions/2593147/html-agility-pack-make-code-look-neat" />
4

3 に答える 3

4

あなたのオブジェクトだとしdocましょう。HtmlDocument

HtmlNodeCollection links = doc.DocumentNode.SelectNodes("//link[@rel]");

link属性を持つ要素を取得する必要がありrelます。今繰り返します:

foreach (HtmlNode link in links)
{
    string url;
    if (link.Attributes["rel"] == "canonical") {
        url = link.Attributes["href"];
    }
}

また、SelectNodes呼び出しでリンクをフィルタリングして、「正規」のリンクのみを取得することもできます。doc.DocumentNode.SelectNodes("//link[@rel='canonical']");

テストされたコードではありませんが、あなたはアイデアを得るでしょう:)

于 2012-11-19T12:44:51.630 に答える
3

受け入れられた答えはもはや正しくありません。更新されたコードは以下のとおりです。

var links = htmlDoc.DocumentNode.SelectNodes("//link[@rel]");

string canonical;

foreach (HtmlNode link in links)
{
    if (link.Attributes["rel"].Value == "canonical")
    {
        canonical = link.Attributes["href"].Value;
    }
}
于 2016-02-07T18:49:11.340 に答える
0
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(_html);

String link = (from x in doc.DocumentNode.Descendants()
           where x.Name == "link"
           && x.Attributes["rel"] != null
           && x.Attributes["rel"].Value == "canonical"
           && x.Attributes["href"] != null
           select x.Attributes["href"].Value).FirstOrDefault();
于 2012-11-19T12:45:40.077 に答える