C# かんたんウェブスクレイピング(AngleSharp)

C# で簡単にウェブスクレイピングをする方法を紹介します。

document.GetElementByIddocument.QuerySelectorAll などを使って簡単にHTMLエレメントを指定できます。

使用するライブラリ

AngleSharp というライブラリを使用します。

ソースコード

このコードでは、ページタイトルと、<h1 class="thumb"> のテキストを取得します。

using AngleSharp;
using AngleSharp.Html.Parser;
using System.Net;
using System.Threading.Tasks;

    public async Task WebscrapingSample()
    {

        var urlstring = "https://usefuledge.com";

        WebClient wc = new WebClient();
        try
        {
            string htmldocs = wc.DownloadString(urlstring);
            Console.WriteLine(htmldocs);

            var config = Configuration.Default;
            var context = BrowsingContext.New(config);
            var document = await context.OpenAsync(req => req.Content(htmldocs));

            Console.WriteLine(document.Title);

            foreach ( var item in document.QuerySelectorAll("h1.thumb"))
            {
                Console.WriteLine(item.TextContent.Trim());
            }


        }
        catch (System.Exception)
        {
            throw;
        }


    }

実行結果

こんな風に出力されると成功です。

Page 1 | Useful Edge
c# ClosedXMLを使用して、xlsxファイル内の文字列を検索する
バッチ処理で Oracle PLSQL を実行してリターンコードを得る
UiPath : Excel表のデータを取得してAccessデータベースへインサートする
広告を出すよりもファンを作ることの方が大事かもしれない
業務アプリを設計するときに大事なこと
アプリ開発を個人や少人数の会社に発注するメリットとデメリット
c#でExcelを編集可能なライブラリ
作業効率化を目的としたWindows・OfficeVBAアプリケーションを開発します
お問い合わせ
会社にお金を出させる方法。どうしたらシステム外注予算を確保してもらえるか

htmlソースのダウンロード

指定したURLのHTMLをダウンロードして変数 htmldocs に格納します。

    var urlstring = "https://usefuledge.com";

    string htmldocs = wc.DownloadString(urlstring);
    Console.WriteLine(htmldocs);

htmlドキュメントを Anglesharp の document オブジェクトに格納

3行目で、さきほど取得したhtmldocsをセットして、documentオブジェクトを取得してます。

    var config = Configuration.Default;
    var context = BrowsingContext.New(config);
    var document = await context.OpenAsync(req => req.Content(htmldocs));

ページタイトル取得

document オブジェクトの Titleプロパティで取得できます。

    Console.WriteLine(document.Title);

h1 タグの thumb クラスで指定されているテキストを取得

document.QuerySelectorAll("h1.thumb") でHTMLエレメントを指定します。

foreach で1つずつループします。

最後に、TextContentプロパティで取得すれば完了です。

    foreach ( var item in document.QuerySelectorAll("h1.thumb"))
    {
        Console.WriteLine(item.TextContent.Trim());
    }

以上、C#でかんたんウェブスクレイピングでした。

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱