C#でWEBサイトのソースコードを取得する

1.はじめに

こんにちは、うらもとです。
WEBサイトのソースコードを取得する必要が発生しました。今回取得するデータはTextBoxやTextAreaやLabel等の値になります。そのためPowerQueryを諦めてC#でWEBサイトのソースコードを取得した時の備忘録です。このソースコードは最低限の処理になりお便利ツール用に作成しましたので、詳細処理の対応はしておりませんのでご理解ください。

2.開発環境

  • Windows11
  • Visual Studio Code 1.70.2
  • .Net Framework 4.8

3.コード

using System.Net.Http;
using System.Net.Http.Headers;
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;


namespace sample1
{
    class Program
    {
        static void Main(string[] args)
        {
            //google
            Uri uri = new Uri("https://www.google.com");
 
            Task<string> task = GetPage(uri);
            task.Wait();
            string result = task.Result;
            if (result != null)
            {
                Console.WriteLine(result);
            }
            else
            {
                Console.WriteLine("失敗");
                Console.WriteLine("==========================");
            }

        }      

        static async Task<string> GetPage(Uri uri)
        {
            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko");
                client.DefaultRequestHeaders.Add("Accept-Language", "ja-JP");
                client.Timeout = TimeSpan.FromSeconds(10.0);
                try
                {
                    return await client.GetStringAsync(uri);
                }
                catch (Exception e)
                {
                    Console.WriteLine("==========================");
                    Console.WriteLine("例外発生", e);
                    Console.WriteLine("==========================");
                }
                return null;
            }
        }
    }
}

4.実行結果

  • ターミナルから実行します。
    コマンド 「dotnet run」を入力し、「enter」ボタンを押下します。
  • HTMLソースコードがターミナルに表示されました。

5.最後に

上記コードで、もしShift_jisを認識しないエラーが発生した場合は、.NET Framework プラットフォームでサポートされていないエンコード(Shift_jis)へのアクセスを許可するおまじないを追記してみてください。
※本来は.net Frameworkには影響ないはずですが・・・
 .net Framework Core用の「
おまじない」になりますが試してみてください。

System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

コメント

タイトルとURLをコピーしました