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);


コメント