Окей, допустим я поправлю регулярку и перепишу код так, что страница будет получаться правильно.
static readonly HttpClient client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.All })
{
DefaultRequestVersion = HttpVersion.Version20
};
static async Task Main(string[] args)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); // потому что VK отвечает в кодировке Windows-1251
client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0");
string html = await client.GetStringAsync("https://vk.com/video638046557_456239079/");
//Console.WriteLine(html);
string rate = Regex.Match(html, @"<span class=""video_item_views"">(\d+)<span class=""num_delim""> </span>").Groups[1].Value;
Console.WriteLine(rate);
Console.ReadKey();
}
Вывод в консоль
1
И это работает как и должно, потому что в ответе от сервера есть только такой кусок
<span class="video_item_views">1<span class="num_delim"> </span>
А все почему? А потому, что то что вы ищете, отсутствует в ответе от сервера на текущий GET запрос, о чем вам яростно и пишут в комментариях выше. Выведите в консоль html и поищите глазами, где же на самом деле нужный фрагмент. Его там нет. Если уж дальше копать, то он есть в другом POST запросе к серверу al_video.php, который формируется яваскриптом. К сожалению, у меня нет возможности засесть и расковырять эту логику. Главное - я подсказал, куда копать. К тому же, я даже не знаю, какую задачу вы решаете.
Кстати, если уж парсить, то можно так, например с помощью HtmlAgilityPack.
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var nodes = doc.DocumentNode.SelectNodes("//span[contains(@class, 'video_item_views')]");
foreach (var node in nodes)
{
Console.WriteLine(node.InnerText);
}
Вывод в консоль
1 090 166 просмотров
1 090 166 просмотров
К сожалению, это все что есть в данном HTML документе, больше ничего нет.
Работать надо с тем, что отвечает сервер, а не с тем что формирует JavaScript. И вообще у VK есть толковое API, нет никакой причины парсить его вот таким вот образом. К тому же HTML регулярками обычно не парсят.
<\/span>слеш надо экрарировать, откройте regex101.com, потестируйте там. А вообще задача 3 строками кода решается без регулярок. Подсказка – aepot Oct 24 '21 at 02:07WebClientустарел в языке C#; ну и да, у ВК есть API, стоит использовать его! – EvgeniyZ Oct 24 '21 at 09:40