スポンサーリンク

【C#】AngleSharp + http通信(Post)でスクレイピングを行う方法。

C#
スポンサーリンク

今回の記事はC#でAngleSharpとhttp通信(Post)を用いてウェブページをスクレイピングする方法をご紹介します。

私の過去記事でAngleSharpを単体で使用したスクレイピングや、http通信を行う方法に関して記事にしているので各ライブラリの詳細な使用方法は各記事から見ていってください。

C#で実サイトにスクレイピングを行う手順
C#でAngleSharpを使用してウェブページをスクレイピングする方法
C#でhttp通信を行う方法。〜 Get/Post通信 〜

では、メインの記事に進みます。

スポンサーリンク

C#でAngleSharp + http通信(Post)を使ってスクレイピング

VisualStudioのコンソールアプリで下記コードのように作成しました。

AngleSharp + Post通信

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; // Taskを使用するために追加します。
using System.Net.Http;
using AngleSharp.Html.Parser;
using AngleSharp.Html.Dom;
using AngleSharp;
using AngleSharp.Dom;
using AngleSharp.Common;
using AngleSharp.Html;
using AngleSharp.Text;



namespace Scraiping
{
    class Program
    {
        // HttpClientのインスタンス作成
        private static HttpClient client = new HttpClient();
        static async Task Main(string[] args)
        {
        //Postに与えるパラメータ
     var parameter = new Dictionary<string, string>()
                    {
                        { "name", "value" },
                        { "テスト", "値" },
                    };
        //Postで付与するパラメータ設
        var target = new FormUrlEncodedContent(parameter);
        //Post通信
        var TarRes = await client.PostAsync($"指定のURL", target);
        //Post通信で帰ってきたレスポンスをStringに変換
        var TarDoc = await TarRes.Content.ReadAsStringAsync();
        // htmlパース
        var parser = new HtmlParser();
        IHtmlDocument ParserList = await parser.ParseDocumentAsync(TarDoc);
        
        
        var document = ParserList.GetElementById("指定のID").TextContent.ToString();
        Console.WriteLine(document)
        
        }
    }
}

Post通信では例を挙げるページを作成するのも準備するのもめんどくさかったのでURLは自由に設定できるようになっております。Post時に一緒に投げるパラメータをディベロッパーツールなどでネットワークを確認して必要な項目を確認してみましょう。

次はGet通信をみていきましょう。

AngleSharp + Get通信

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using AngleSharp.Html.Parser;
using AngleSharp.Html.Dom;

namespace test
{
    class Program
    {
        // HttpClientのインスタンス
        private static HttpClient client = new HttpClient();
        static async Task Main(string[] args)
        {
            // HTMLを非同期で取得します。
            var url = "https://ja.wikipedia.org/wiki/メインページ";
            var response = client.GetAsync(url);
           
            var content = await response.Result.Content.ReadAsStringAsync();
            
            
            var parser = new HtmlParser();
            IHtmlDocument ParserList = await parser.ParseDocumentAsync(content);

            var document = ParserList.GetElementsByClassName("mainpage-heading-title").Select(m => m.TextContent);
            Console.WriteLine(document.ToArray()[0].ToString());
            
        }
    }
}

Wikiのより抜き記事と言う文言が出力されればOKです。Post通信との違いはパラメータの設定がない為、ページを読み込む場合の通信時に使用されます。その為、Post通信よりも使用しやすいかもしれません。

今回の記事は以上です。他にもC#の記事を多数記載しています。是非参考にしてみてください。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

C#
スポンサーリンク
スポンサーリンク
ともぶろぐ

コメント

  1. […] 「【C#】Anglesharpとhttp通信を用いてスクレイピングを行う方法」 […]

  2. […] 「C#でAnglesharp+http通信でスクレイピングする方法。〜AngleSharp単体での限界〜」 […]

  3. […] 「C#でAnglesharp+http通信でスクレイピングする方法。〜AngleSharp単体での限界〜」 […]

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