So extrahieren Sie Meta-Tags aus einer Reihe von URLs ohne Download von ganzen HTML-Code in c #

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

Frage

Ich möchte Titel, Beschreibung und Schlüsselwörter eines Seris von URLs extrahieren
Ich habe diesen 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;

Aber ich möchte nicht ganze Seite herunterladen, weil es für eine Reihe von URLs so zeitaufwendig ist. Gibt es eine Möglichkeit, diese Informationen zu erhalten, ohne die ganze Seite herunterzuladen?
Ich sollte erwähnen, dass ich diese URLs in der Google-Suchergebnisseite kaufe, die Abfrage an Google sendet.

Beliebte Antwort

Sie können Teilergebnisse mit HttpClient anfordern und herunterladen, indem Sie den Bereichskopf angeben. Sie können die Pufferlänge definieren, die Sie herunterladen und lesen möchten:

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

Das gleiche Ergebnis konnte mit dem "alten" WebClient



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum