💻️
スクレイピングとサーバー実行のサンプルコード(C#)

C#でスクレイピングとWebサーバーを開発する手順を書いていきます。

開発の手順

環境構築

# 開発環境構築
$ brew install --cask dotnet-sdk

# プロジェクトのディレクトリ作成
$ dotnet new web -o ScrapingServer
$ cd ScrapingServer

# パッケージの追加
$ dotnet add package AngleSharp

$ dotnet new web -o ScrapingServer のコマンドが実行完了後、以下のファイルが存在することを確認してください。

インストールしている外部パッケージは以下のものです。

Program.cs を以下の内容に書き替えてみましょう。

static string Handler()
{
  return "test";
}

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", Handler);

app.Run("http://localhost:3000");

その後、以下コマンドを実行して http://localhost:3000 にブラウザでアクセスすると、”test” の文字が表示されます。

$ dotnet run これで、Webサーバーの起動ができました。

スクレイピングで取得した情報を表示する Program.cs に以下の実装を追加します。

// パッケージの追加
using AngleSharp;
using System.Text.Json;

// 関数の追加
static async Task<IEnumerable<string>> Scraping()
{
  var url = "https://en.wikipedia.org/wiki/List_of_programming_languages";

  var config = Configuration.Default.WithDefaultLoader();
  var context = BrowsingContext.New(config);
  var document = await context.OpenAsync(url);

  var cellSelector = ".div-col li";
  var lists = document.QuerySelectorAll(cellSelector);
  var items = lists.Select(el => el.TextContent);
  return items;
}

static string Handler()
{
  // 追加した関数を使用する
  var task = Scraping();
  var items = task.Result;
  var itemsJson = JsonSerializer.Serialize(items);
  return itemsJson;
}

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", Handler);

app.Run("http://localhost:3000");

追加実装の後、 $ dotnet run を再実行して http://localhost:3000 にアクセスすると、 Wikipediaのページから取得したプログラミング言語一覧の文字が表示されるようになります。