HTMLNode null при выборе узлов из htmldocument - PullRequest
0 голосов
/ 25 июня 2018

Итак, я пытаюсь получить идентификатор дорожки soundcloud, я не уверен, как это сделать, но до сих пор я понял, что должен иметь возможность читать метатег со страницы песни в soundcloud.,Вот мой код:

string url = "https://soundcloud.com/hardstyle/scarphase-angernoizer-chaos-of-the-mayans-feat-tha-watcher-bkjn-vs-partyraiser-2017-anthem";
HtmlWeb w = new HtmlWeb();
HtmlDocument d = w.Load(url);

var x = d.DocumentNode.SelectSingleNode("/html/head/meta[30]");
Console.WriteLine(x.InnerText);

Я пытаюсь прочитать следующий тег:

<meta property="twitter:app:url:googleplay" content="soundcloud://sounds:322162984">

Так что я могу получить контент, а затем получить идентификатор трека

При попытке отобразить внутренний текст переменной X нечего отображать, при установке точки останова он говорит, что X равен нулю, может кто-нибудь объяснить мне, почему это так и как это исправить?

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Вам необходимо прочитать атрибут «содержимое» выбранного узла:

string url = "https://soundcloud.com/hardstyle/scarphase-angernoizer-chaos-of-the-mayans-feat-tha-watcher-bkjn-vs-partyraiser-2017-anthem";
HtmlWeb w = new HtmlWeb();
HtmlDocument d = w.Load(url);
var x = d.DocumentNode.SelectSingleNode("/html/head/meta[30]").Attributes["content"].Value;
Console.WriteLine(x);   
0 голосов
/ 25 июня 2018
// Get the property attribute of x
var prop = x.GetAttributeValue("property", "");
Console.WriteLine(prop );
// output: twitter:app:url:googleplay

//similarly get the content attribute of x
var content = x.GetAttributeValue("content", "");
Console.WriteLine(content );
//output : soundcloud://sounds:322162984

Надеюсь, это поможет.

0 голосов
/ 25 июня 2018

Вам нужно получить атрибут, внутри которого нет внутреннего текста.

Вместо этого используйте var x = d.DocumentNode.SelectSingleNode("/html/head/meta[30]@content").Value;. Это укажет ваш запрос на тег содержимого, где вы можете извлечь soundcloud://....

...