C#でwebスクレイピング
C#の勉強がてらwebスクレイピングでもやってみようと思い、ちょっとやってみたので保存用に書き留めておきます。
C#でのWebスクレイピングは.NETのフレームワーク郡でもできるみたいだが、「AngleSharp」というのを使えば、もっと短いコードでwebスクレイピングができるらしく試してみた
<実行環境>
・VisualStudioCommunity2019
・.Netframework4.7.1
AngleSharpのインストール
AngleSharpでいざWebスクレイピング
とりあえず自分のサイトのスクレイピング。ヤフーファイナンスとかでもいいかなと思ったけど、あそこはスクレイピングにはうるさいので、とりあえず自分のサイトにしてみた
# ライブラリの呼び出し using System; using System.Linq; using System.Collections.Generic; using System.IO; using System.Text; using System.Net; using System.Text.RegularExpressions; using AngleSharp; # 名前空間の定義 namespace Sample { # クラスの定義 public class Program { static void Main(string[] args) { // スクレイピング先のURLの定義 var htmlUrl = $"https://tkstock.site/2019/10/17/anglesharp-cs-scraping/"; // Sectorの定義 var querySelector = $"#post-3909 > article > header > h1"; // HTMLドキュメントの取得 var document = BrowsingContext.New(Configuration.Default.WithDefaultLoader()).OpenAsync(htmlUrl).Result; // クエリセレクタでデータの取得 var element = document.QuerySelector(querySelector); // デバック画面で確認 Console.WriteLine($"blogtitle is {element.InnerHtml}"); } } }
最後のSystem.Console.WriteLine();
はPythonのprint、javascriptのconsole.log,Cのprintfみたいなデバック関数。これを入れることでデバック(なし)実行したときにコンソール画面にスクレイピングした結果が表示される。
やってみた感じPythonのrequestsとBeautifulSoupでのスクレイピングに近くモダンといえばモダンだなという感じ。
参考:https://emergingtechnology.azurewebsites.net/2018/05/30/scraping/
関連記事:PythonでのWebスクレイピングには「requests」がめっちゃ便利という話
関連記事:【Python】「Beautiful Soup」でスクレイピングしたhtmlデータを解析する
関連記事:【Python】スクレイピングした価格データをデータベース(DB)に保存する
コメント