Взять все эелементы с аттрибутом
[![введите сюда описание изображения][1]][1]У меня есть на сайте кучу div которые имеют аттрибут data-href.
Мне нужно взять именно эти div и вытянуть с них значение аттрибута.
Как ни пробовал, он не видит их, вот мой код:
var all_web = document.QuerySelectorAll("div[data-href]");
foreach (var el_web in all_web)
{Console.WriteLine(el_web.GetAttribute("data-href").ToString());}
и через Where
var all_web = document.QuerySelectorAll("div").Where(x=>x.HasAttribute("data-href"));
foreach (var el_web in all_web)
{Console.WriteLine(el_web.GetAttribute("data-href").ToString());}
div селектор самого сайта:
<div data-href="//aliexpress.ru/item/*******.html.../div>
Я беру html с помощью httpclient, и дальше по стандарту
string allhtml = await client.GetStringAsync("https://aliexpress.ru/......./");
var config = Configuration.Default.WithDefaultLoader().WithCss();
var context = BrowsingContext.New(config); //description item_table-description
IDocument document = await context.OpenAsync(req => req.Content(allhtml))
[1]: https://i.stack.imgur.com/3gpQP.png
Ответы (1 шт):
Проанализировав страницу по вашей ссылке, я не увидел ни одного тега div с требуемым аттрибутом data-href.
Я использовал:
- HtmlAgilityPack 1.11.23
- Fizzler.Systems.HtmlAgilityPack 1.2.1
Попробовал выдачу для a[data-href], всё заработало.
public static void Main(string[] args)
{
HttpClient client = new HttpClient();
string page = client.GetStringAsync("https://aliexpress.ru/store/<censored>").GetAwaiter().GetResult();
HtmlDocument html = new HtmlDocument();
html.LoadHtml(page);
HtmlNode document = html.DocumentNode;
IEnumerable<HtmlNode> nodes = document.QuerySelectorAll("a[data-href]");
foreach (HtmlNode el_web in nodes)
{
Console.WriteLine(el_web.Attributes["data-href"].Value);
}
Console.ReadKey();
}
(Простите, не стал заморачиваться с асинхронностью)
Возможно, вы не видите нужных тегов потому, что их рендерит в обычном браузере JavaScript. Поэтому получить их напрямую не получится. Нужно проанализировать, куда еще браузер шлет запрос, и из какого именно ответа прилетают нужные вам данные. Брать эти правила и пробовать по ним слать запросы на алик и парсить данные, оттуда полученные.