Выдает null, почему, есть решение проблеммы?
Есть 2 кода на htmlagilitypack и anglesharp, и не один из них не работает, вот коды htmlagilitypack
var doc = new HtmlWeb().Load("https://www.instagram.com/p/BGwG0OKlxr9/?igshid=10x3x18i0i7nb");// загружаем страницу
var elements = doc.DocumentNode.SelectNodes("//a[@class = 'FPmhX notranslate nJAzx']");// беру массу заголовков
foreach (HtmlNode element in elements)
{
// var heads = HttpUtility.HtmlDecode(element.SelectSingleNode(".//a[@class = 'FPmhX notranslate nJAzx']").InnerText);
Console.WriteLine(element.GetAttributeValue("href", null));
}
anglesharp
var config = Configuration.Default;
var context = BrowsingContext.New(config);
string HTML = new WebClient().DownloadString("https://www.instagram.com/p/BGwG0OKlxr9/?igshid=10x3x18i0i7nb");
var document = await context.OpenAsync(req => req.Content(HTML)); //Получение html страницы
var links = document.QuerySelectorAll("a")
.Where(item => item.ClassName.Equals("FPmhX notranslate nJAzx") && item.ClassName!= null).OfType<IHtmlAnchorElement>();
// var blueListItemsLinq = document.QuerySelectorAll("div").Where(m => m.ClassName != null && m.ClassName.Equals("wants-card__header"));
foreach (var item in links)
{
Console.WriteLine($"Name:{item.Text}");
}
Console.Read();
в htmlagilitypack выдает ошибку :
System.NullReferenceException: "Object reference not set to an instance of an object."
elements было null.
. Может можете подсказать как сделать, чтобы можно было с инсты вытащить ссылку
Ответы (1 шт):
На странице полученной через anglesharp подобных элементов нет, поэтому он отдаёт пустое множество, но не падает.
Агилитипак в документации (не могу запустить код) пишет null if no node matched поэтому падает с NullReference
Update
И если js генерит, как через js вытащить ссылку?
var config = Configuration.Default.WithDefaultLoader().WithCss();//.WithJavaScript();//.WithJs()
Дополнительно подключать AngleSharp.Css и либо AngleSharp.Scripting.Javascript (старая версия) либо AngleSharp.Js (новая экспериментальная версия)
Пример: В чем ошибка в парсере AngleSharp и как вообще работает QuerySelector?
Update2 Если бы ссылки были -- можно было бы упростить код:
var config = Configuration.Default;
var context = BrowsingContext.New(config);
var source = @"<body><a href='#' class='FPmhX notranslate nJAzx'>asdf</a></body>";
var document = await context.OpenAsync(req => req.Content(source));
var links = document.QuerySelectorAll("a.FPmhX.notranslate.nJAzx");
//links.Dump();
foreach (var item in links)
{
Console.WriteLine($"Name:{item.TextContent}");
}
(обратите внимание на то, что записаны через точку)