Comment extraire les balises META d'une série d'URL sans télécharger le code HTML complet en c #

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

Question

Je veux extraire le titre, la description et les mots-clés d'une série d'URL
J'ai ce code

 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;

Mais je ne veux pas télécharger la page entière, car cela prend beaucoup de temps pour une série d’URL. Est-il possible d'obtenir ces informations sans télécharger la page entière?
Je dois mentionner que je reçois ces URL dans la page de résultats de la recherche Google, en envoyant une requête d'envoi à Google.

Réponse populaire

Vous pouvez demander et télécharger un résultat partiel à l'aide de HttpClient en spécifiant l'en-tête de la plage. Vous pouvez définir la longueur de la mémoire tampon que vous souhaitez télécharger et lire:

    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
            }
        }
    }

Le même résultat pourrait être obtenu avec "l'ancien" WebClient




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi