Как извлечь метатеги из серии URL-адресов без загрузки всего html в c #

asp.net c# html html-agility-pack metadata

Вопрос

Я хочу извлечь название, описание и ключевые слова сери URL-адресов
У меня есть этот код

 WebClient x = new WebClient();
 string  pageSource = (x.DownloadString(url));     
 query.title = Regex.Match(pageSource, @"\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>", RegexOptions.IgnoreCase).Groups["Title"].Value;

Но я не хочу загружать целую страницу, потому что это так много времени для серии URL-адресов. Есть ли способ получить эту информацию без скачивания всей страницы?
Я должен упомянуть, что я получаю эти URL-адреса на странице результатов поиска google search, отправляя запрос в google.

Популярные ответы

Вы можете запросить и загрузить частичный результат с помощью HttpClient , указав заголовок диапазона. Вы можете определить длину буфера, которую вы хотите загрузить и прочитать:

    static void Main()
    {
        Test().GetAwaiter().GetResult();
    }

    private static async Task Test()
    {
        const string url = "http://google.com";
        const int bytesToRead = 2000;

        using (var httpclient = new HttpClient())
        {
            httpclient.DefaultRequestHeaders.Range = new RangeHeaderValue(0, bytesToRead);

            var response = await httpclient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);

            using (var stream = await response.Content.ReadAsStreamAsync())
            {
                var buffer = new byte[bytesToRead];
                stream.Read(buffer, 0, buffer.Length);

                var partialHtml = Encoding.UTF8.GetString(buffer);
                //extract required info from partial html
            }
        }
    }

Тот же результат может быть достигнут с использованием «старого» WebClient



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow