どのようにc#でHTML全体をダウンロードせずに一連のURLのメタタグを抽出する

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

質問

私は、URLのserisのタイトル、説明、およびキーワードを抽出したい
私はこのコードを持っています

 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では非常に時間がかかるので、私は全ページをダウンロードしたくありません。ページ全体をダウンロードせずにこれらの情報を取得する方法はありますか?
私は、Googleの検索結果ページでこれらのURLを取得して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を使用しても同じ結果が得られWebClient



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ