C#でウェブサイトからデータを取得する方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronWebscraperは、ウェブスクレイピング、ウェブデータ抽出、およびウェブコンテンツ解析のための.NETライブラリです。 これは、開発と生産において使用するためにMicrosoft Visual Studioプロジェクトに追加できる使いやすいライブラリです。

IronWebscraperには、許可されるページや禁止されるページ、オブジェクト、メディアなどを制御する機能をはじめ、多くのユニークな機能と能力があり、複数のID、ウェブキャッシュの管理、およびこのチュートリアルで説明する多くの他の機能を実現できます。

IronWebscraperを使い始める

今日あなたのプロジェクトでIronWebScraperを無料トライアルで使用開始。

最初のステップ:
green arrow pointer


対象読者

このチュートリアルは、ウェブスクレイピング機能のためのソリューションを構築および実装したい基本または高度なプログラミングスキルを持つソフトウェア開発者を対象としています(ウェブサイトのスクレイピング、ウェブサイトデータの収集と抽出、ウェブサイトコンテンツの解析、ウェブハーベスティング)。

ウェブスクレイピングイメージ

必要なスキル

1.C#やVB.NETなどのMicrosoftプログラミング言語のいずれかを使用するスキルを持つプログラミングの基本的な基礎知識 2.ウェブ技術(HTML、JavaScript、JQuery、CSSなど)とその仕組みに関する基本的な理解があること。

  1. DOM、XPath、HTML、CSSセレクタの基本的な知識

ツール

1.Microsoft Visual Studio 2010以上

  1. ChromeのウェブインスペクターやFirefoxのFirebugなど、ブラウザ用のウェブ開発者拡張機能

なぜスクレイピングを行うのか? (Reasons and Concepts)

次の能力を備えた製品やソリューションを構築したい場合:

1.ウェブサイトデータの抽出 2.複数のウェブサイトの内容、価格、機能などを比較する。

  1. ウェブサイトコンテンツのスキャンとキャッシュ

上記の理由が一つでもある場合、IronWebscraperはニーズに合った素晴らしいライブラリです

IronWebScraperのインストール方法

新しいプロジェクトを作成した後(付録Aを参照)、NuGetを使用してライブラリを自動で挿入するか、DLLを手動でインストールすることにより、プロジェクトにIronWebScraperライブラリを追加できます。

NuGetを使用したインストール

NuGetを使用してプロジェクトにIronWebScraperライブラリを追加するには、ビジュアルインターフェイス(NuGetパッケージマネージャー)を使用するか、パッケージマネージャーコンソールを使用してコマンドで実行できます。

NuGetパッケージマネージャーを使用

1.マウスを使用 -> プロジェクト名を右クリック -> NuGetパッケージの管理を選択 2.ブラウズタブから -> IronWebscraperを検索 -> インストール 3.OKをクリック

  1. 完了です

NuGetパッケージコンソールを使用

1.ツールから -> NuGetパッケージマネージャ -> パッケージマネージャコンソール 2.クラス・ライブラリ・プロジェクトをデフォルト・プロジェクトとして選択する

  1. コマンドを実行 -> Install-Package IronWebScraper

手動でインストール

1.https://ironsoftware.comへ 2.IronWebscraper をクリックするか、URL https://ironsoftware.com/csharp/webscraper/ を使って直接ページをご覧ください。

  1. DLLをダウンロード
    4.ダウンロードした圧縮ファイルを展開する 5.Visual Studioでプロジェクトを右クリック -> 追加 -> 参照 -> 参照

DLLを使用したIronWebscraperの追加

6.解凍されたフォルダ -> netstandard2.0 -> に移動し、すべての .dll ファイルを選択してください。

DLLを使用したIronWebscraperの追加 2</

  1. そして完了です!

HelloScraper - 最初のIronWebScraperサンプル

通常通り、Hello Scraperアプリの実装から始めて、IronWebScraperを使用する第一歩を踏み出しましょう。

  • "IronWebScraperSample"という名前の新しいコンソールアプリケーションを作成しました

IronWebScraperサンプルを作成する手順

1.フォルダを作成し、名前を "HelloScraperSample" とします。 2.次に、新しいクラスを追加し、"HelloScraper" と名付けます。 HelloScraperクラスの追加

  1. HelloScraperにコードスニペットを追加

    public class HelloScraper : WebScraper
    {
        /// <summary>
        /// Override this method to initialize your web scraper.
        /// Important tasks will be to request at least one start URL and set allowed/banned domain or URL patterns.
        /// </summary>
        public override void Init()
        {
            License.LicenseKey = "LicenseKey"; // Write License Key
            this.LoggingLevel = WebScraper.LogLevel.All; // Log all events
            this.Request("https://blog.scrapinghub.com", Parse); // Initialize a web request to the given URL
        }
    
        /// <summary>
        /// Override this method to create the default Response handler for your web scraper.
        /// If you have multiple page types, you can add additional similar methods.
        /// </summary>
        /// <param name="response">The HTTP Response object to parse</param>
        public override void Parse(Response response)
        {
            // Set working directory for the project
            this.WorkingDirectory = AppSetting.GetAppRoot() + @"\HelloScraperSample\Output\";
            // Loop on all links
            foreach (var titleLink in response.Css("h2.entry-title a"))
            {
                // Read link text
                string title = titleLink.TextContentClean;
                // Save result to file
                Scrape(new ScrapedData() { { "Title", title } }, "HelloScraper.json");
            }
    
            // Loop on all links for pagination
            if (response.CssExists("div.prev-post > a[href]"))
            {
                // Get next page URL
                var nextPage = response.Css("div.prev-post > a[href]")[0].Attributes["href"];
                // Scrape next URL
                this.Request(nextPage, Parse);
            }
        }
    }
    public class HelloScraper : WebScraper
    {
        /// <summary>
        /// Override this method to initialize your web scraper.
        /// Important tasks will be to request at least one start URL and set allowed/banned domain or URL patterns.
        /// </summary>
        public override void Init()
        {
            License.LicenseKey = "LicenseKey"; // Write License Key
            this.LoggingLevel = WebScraper.LogLevel.All; // Log all events
            this.Request("https://blog.scrapinghub.com", Parse); // Initialize a web request to the given URL
        }
    
        /// <summary>
        /// Override this method to create the default Response handler for your web scraper.
        /// If you have multiple page types, you can add additional similar methods.
        /// </summary>
        /// <param name="response">The HTTP Response object to parse</param>
        public override void Parse(Response response)
        {
            // Set working directory for the project
            this.WorkingDirectory = AppSetting.GetAppRoot() + @"\HelloScraperSample\Output\";
            // Loop on all links
            foreach (var titleLink in response.Css("h2.entry-title a"))
            {
                // Read link text
                string title = titleLink.TextContentClean;
                // Save result to file
                Scrape(new ScrapedData() { { "Title", title } }, "HelloScraper.json");
            }
    
            // Loop on all links for pagination
            if (response.CssExists("div.prev-post > a[href]"))
            {
                // Get next page URL
                var nextPage = response.Css("div.prev-post > a[href]")[0].Attributes["href"];
                // Scrape next URL
                this.Request(nextPage, Parse);
            }
        }
    }
    $vbLabelText   $csharpLabel
  2. さてスクレイピングを開始するために、このコードスニペットをMainに追加

    static void Main(string[] args)
    {
        // Create Object From Hello Scrape class
        HelloScraperSample.HelloScraper scrape = new HelloScraperSample.HelloScraper();
        // Start Scraping
        scrape.Start();
    }
    static void Main(string[] args)
    {
        // Create Object From Hello Scrape class
        HelloScraperSample.HelloScraper scrape = new HelloScraperSample.HelloScraper();
        // Start Scraping
        scrape.Start();
    }
    $vbLabelText   $csharpLabel

5.翻訳結果は、WebScraper.WorkingDirectory/classname.Jsonの形式でファイルに保存されます。 HelloScraperの結果

コード概要

Scrape.Start()は次のようにスクレイピングロジックをトリガーします:

  1. 変数、スクレイピングプロパティ、および動作属性を初期化するためのInit()メソッドを呼び出します。
  2. 開始ページリクエストをInit()Request("https://blog.scrapinghub.com", Parse)を使用して設定。
  3. 複数のHTTPリクエストとスレッドを並行して処理しながら、コードを同期的に保ち、デバッグしやすくします。
  4. Parse()メソッドはInit()の後にトリガーされ、レスポンスを処理し、CSSセレクタを使用してデータを抽出し、JSON形式で保存します。

IronWebScraperライブラリの機能とオプション

更新されたドキュメントは、手動インストール方法でダウンロードされたzipファイル(IronWebscraper Documentation.chmファイル)の中にあります。また、ライブラリの最新の更新については、https://ironsoftware.com/csharp/webscraper/object-reference/のオンラインドキュメントをご確認ください。

プロジェクトでIronWebScraperを使用するには、IronWebScraper.WebScraperクラスから継承し、クラスライブラリを拡張してスクレイピング機能を追加する必要があります。 また、Init()Parse(Response response)メソッドを実装する必要があります。

namespace IronWebScraperEngine
{
    public class NewsScraper : IronWebScraper.WebScraper
    {
        public override void Init()
        {
            throw new NotImplementedException();
        }

        public override void Parse(Response response)
        {
            throw new NotImplementedException();
        }
    }
}
namespace IronWebScraperEngine
{
    public class NewsScraper : IronWebScraper.WebScraper
    {
        public override void Init()
        {
            throw new NotImplementedException();
        }

        public override void Parse(Response response)
        {
            throw new NotImplementedException();
        }
    }
}
$vbLabelText   $csharpLabel
プロパティ \ 関数タイプ説明
Init ()メソッドスクレイパーのセットアップに使用
Parse (Response response)メソッドスクレイパーが使用するロジックとその処理方法を実装するために使用します。 異なるページの動作や構造に対して複数のメソッドを実装可能。
BannedUrls, AllowedUrls, BannedDomainsコレクションURL やドメインを禁止/許可するために使用。 例: BannedUrls.Add(".zip", ".exe", ".gz", ".pdf"); ワイルドカードおよび正規表現をサポート。
ObeyRobotsDotTxtBooleanrobots.txtの指令を読み取り、従うための有効/無効を切り替えるために使用。
ObeyRobotsDotTxtForHost (string Host)メソッド特定のドメインのrobots.txtの指令を読み取り、従うための有効/無効を切り替えるために使用。
Scrape, ScrapeUniqueメソッド
ThrottleMode列挙型列挙型オプション:ByIpAddress, ByDomainHostName。 ホストIPアドレスやドメインホスト名を尊重して、インテリジェントなリクエストスロットリングを有効化します。
EnableWebCache, EnableWebCache (TimeSpan cacheDuration)メソッドウェブリクエストのキャッシュを有効にします。
MaxHttpConnectionLimitInt許可されるオープンHTTPリクエスト(スレッド)の合計数を設定します。
RateLimitPerHostTimeSpan指定されたドメインまたはIPアドレスへのリクエストの間の遅延(ポーズ)の最小礼儀定義を設定します。
OpenConnectionLimitPerHostInt指定されたホスト名またはIPアドレスごとの同時HTTPリクエスト(スレッド)の許可数を設定します。
WorkingDirectorystringデータを保存する作業ディレクトリパスを設定します。

実世界のサンプルと実践

オンラインムービーサイトのスクレイピング

映画のウェブサイトをスクレイピングする例を作ってみましょう。

新しいクラスを追加しMovieScraperと名付けます:

MovieScraperクラスの追加

HTML構造

これはウェブサイトのホームページHTMLの一部です:

<div id="movie-featured" class="movies-list movies-list-full tab-pane in fade active">
    <div data-movie-id="20746" class="ml-item">
        <a href="https://website.com/film/king-arthur-legend-of-the-sword-20746/">
            <span class="mli-quality">CAM</span>
            <img data-original="https://img.gocdn.online/2017/05/16/poster/2116d6719c710eabe83b377463230fbe-king-arthur-legend-of-the-sword.jpg" 
                 class="lazy thumb mli-thumb" alt="King Arthur: Legend of the Sword"
                  src="https://img.gocdn.online/2017/05/16/poster/2116d6719c710eabe83b377463230fbe-king-arthur-legend-of-the-sword.jpg" 
                 style="display: inline-block;">
            <span class="mli-info"><h2>King Arthur: Legend of the Sword</h2></span>
        </a>
    </div>
    <div data-movie-id="20724" class="ml-item">
        <a href="https://website.com/film/snatched-20724/" >
            <span class="mli-quality">CAM</span>
            <img data-original="https://img.gocdn.online/2017/05/16/poster/5ef66403dc331009bdb5aa37cfe819ba-snatched.jpg" 
                 class="lazy thumb mli-thumb" alt="Snatched" 
                 src="https://img.gocdn.online/2017/05/16/poster/5ef66403dc331009bdb5aa37cfe819ba-snatched.jpg" 
                 style="display: inline-block;">
            <span class="mli-info"><h2>Snatched</h2></span>
        </a>
    </div>
</div>
<div id="movie-featured" class="movies-list movies-list-full tab-pane in fade active">
    <div data-movie-id="20746" class="ml-item">
        <a href="https://website.com/film/king-arthur-legend-of-the-sword-20746/">
            <span class="mli-quality">CAM</span>
            <img data-original="https://img.gocdn.online/2017/05/16/poster/2116d6719c710eabe83b377463230fbe-king-arthur-legend-of-the-sword.jpg" 
                 class="lazy thumb mli-thumb" alt="King Arthur: Legend of the Sword"
                  src="https://img.gocdn.online/2017/05/16/poster/2116d6719c710eabe83b377463230fbe-king-arthur-legend-of-the-sword.jpg" 
                 style="display: inline-block;">
            <span class="mli-info"><h2>King Arthur: Legend of the Sword</h2></span>
        </a>
    </div>
    <div data-movie-id="20724" class="ml-item">
        <a href="https://website.com/film/snatched-20724/" >
            <span class="mli-quality">CAM</span>
            <img data-original="https://img.gocdn.online/2017/05/16/poster/5ef66403dc331009bdb5aa37cfe819ba-snatched.jpg" 
                 class="lazy thumb mli-thumb" alt="Snatched" 
                 src="https://img.gocdn.online/2017/05/16/poster/5ef66403dc331009bdb5aa37cfe819ba-snatched.jpg" 
                 style="display: inline-block;">
            <span class="mli-info"><h2>Snatched</h2></span>
        </a>
    </div>
</div>
HTML

ムービーID、タイトル、および詳細ページへのリンクがあります。 このデータのスクレイピングを始めましょう:

public class MovieScraper : WebScraper
{
    public override void Init()
    {
        License.LicenseKey = "LicenseKey";
        this.LoggingLevel = WebScraper.LogLevel.All;
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\MovieSample\Output\";
        this.Request("www.website.com", Parse);
    }

    public override void Parse(Response response)
    {
        foreach (var div in response.Css("#movie-featured > div"))
        {
            if (div.GetAttribute("class") != "clearfix")
            {
                var movieId = div.GetAttribute("data-movie-id");
                var link = div.Css("a")[0];
                var movieTitle = link.TextContentClean;
                Scrape(new ScrapedData() { { "MovieId", movieId }, { "MovieTitle", movieTitle } }, "Movie.Jsonl");
            }
        }           
    }
}
public class MovieScraper : WebScraper
{
    public override void Init()
    {
        License.LicenseKey = "LicenseKey";
        this.LoggingLevel = WebScraper.LogLevel.All;
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\MovieSample\Output\";
        this.Request("www.website.com", Parse);
    }

    public override void Parse(Response response)
    {
        foreach (var div in response.Css("#movie-featured > div"))
        {
            if (div.GetAttribute("class") != "clearfix")
            {
                var movieId = div.GetAttribute("data-movie-id");
                var link = div.Css("a")[0];
                var movieTitle = link.TextContentClean;
                Scrape(new ScrapedData() { { "MovieId", movieId }, { "MovieTitle", movieTitle } }, "Movie.Jsonl");
            }
        }           
    }
}
$vbLabelText   $csharpLabel

構造化ムービークラス

フォーマットされたデータを保持するために、ムービークラスを実装しましょう:

public class Movie
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string URL { get; set; }
}
public class Movie
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string URL { get; set; }
}
$vbLabelText   $csharpLabel

ムービークラスを使用するようにコードを更新します:

public class MovieScraper : WebScraper
{
    public override void Init()
    {
        License.LicenseKey = "LicenseKey";
        this.LoggingLevel = WebScraper.LogLevel.All;
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\MovieSample\Output\";
        this.Request("https://website.com/", Parse);
    }

    public override void Parse(Response response)
    {
        foreach (var div in response.Css("#movie-featured > div"))
        {
            if (div.GetAttribute("class") != "clearfix")
            {
                var movie = new Movie
                {
                    Id = Convert.ToInt32(div.GetAttribute("data-movie-id")),
                    Title = div.Css("a")[0].TextContentClean,
                    URL = div.Css("a")[0].Attributes["href"]
                };
                Scrape(movie, "Movie.Jsonl");
            }
        }
    }
}
public class MovieScraper : WebScraper
{
    public override void Init()
    {
        License.LicenseKey = "LicenseKey";
        this.LoggingLevel = WebScraper.LogLevel.All;
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\MovieSample\Output\";
        this.Request("https://website.com/", Parse);
    }

    public override void Parse(Response response)
    {
        foreach (var div in response.Css("#movie-featured > div"))
        {
            if (div.GetAttribute("class") != "clearfix")
            {
                var movie = new Movie
                {
                    Id = Convert.ToInt32(div.GetAttribute("data-movie-id")),
                    Title = div.Css("a")[0].TextContentClean,
                    URL = div.Css("a")[0].Attributes["href"]
                };
                Scrape(movie, "Movie.Jsonl");
            }
        }
    }
}
$vbLabelText   $csharpLabel

詳細ページのスクレイピング

Movieクラスを拡張して、詳細情報用のプロパティを追加しましょう:

public class Movie
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string URL { get; set; }
    public string Description { get; set; }
    public List<string> Genre { get; set; }
    public List<string> Actor { get; set; }
}
public class Movie
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string URL { get; set; }
    public string Description { get; set; }
    public List<string> Genre { get; set; }
    public List<string> Actor { get; set; }
}
$vbLabelText   $csharpLabel

その後、拡張されたIronWebScraperの機能を使用して、詳細ページに移動してスクレイピングします:

public class MovieScraper : WebScraper
{
    public override void Init()
    {
        License.LicenseKey = "LicenseKey";
        this.LoggingLevel = WebScraper.LogLevel.All;
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\MovieSample\Output\";
        this.Request("https://domain/", Parse);
    }

    public override void Parse(Response response)
    {
        foreach (var div in response.Css("#movie-featured > div"))
        {
            if (div.GetAttribute("class") != "clearfix")
            {
                var movie = new Movie
                {
                    Id = Convert.ToInt32(div.GetAttribute("data-movie-id")),
                    Title = div.Css("a")[0].TextContentClean,
                    URL = div.Css("a")[0].Attributes["href"]
                };
                this.Request(movie.URL, ParseDetails, new MetaData() { { "movie", movie } });
            }
        }           
    }

    public void ParseDetails(Response response)
    {
        var movie = response.MetaData.Get<Movie>("movie");
        var div = response.Css("div.mvic-desc")[0];
        movie.Description = div.Css("div.desc")[0].TextContentClean;
        movie.Genre = div.Css("div > p > a").Select(element => element.TextContentClean).ToList();
        movie.Actor = div.Css("div > p:nth-child(2) > a").Select(element => element.TextContentClean).ToList();

        Scrape(movie, "Movie.Jsonl");
    }
}
public class MovieScraper : WebScraper
{
    public override void Init()
    {
        License.LicenseKey = "LicenseKey";
        this.LoggingLevel = WebScraper.LogLevel.All;
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\MovieSample\Output\";
        this.Request("https://domain/", Parse);
    }

    public override void Parse(Response response)
    {
        foreach (var div in response.Css("#movie-featured > div"))
        {
            if (div.GetAttribute("class") != "clearfix")
            {
                var movie = new Movie
                {
                    Id = Convert.ToInt32(div.GetAttribute("data-movie-id")),
                    Title = div.Css("a")[0].TextContentClean,
                    URL = div.Css("a")[0].Attributes["href"]
                };
                this.Request(movie.URL, ParseDetails, new MetaData() { { "movie", movie } });
            }
        }           
    }

    public void ParseDetails(Response response)
    {
        var movie = response.MetaData.Get<Movie>("movie");
        var div = response.Css("div.mvic-desc")[0];
        movie.Description = div.Css("div.desc")[0].TextContentClean;
        movie.Genre = div.Css("div > p > a").Select(element => element.TextContentClean).ToList();
        movie.Actor = div.Css("div > p:nth-child(2) > a").Select(element => element.TextContentClean).ToList();

        Scrape(movie, "Movie.Jsonl");
    }
}
$vbLabelText   $csharpLabel

IronWebScraperライブラリの特徴

HttpIdentity機能

一部のシステムはコンテンツを閲覧するためにユーザーのログインを要求します; HttpIdentityを使用してクレデンシャルを利用します:

HttpIdentity id = new HttpIdentity
{
    NetworkUsername = "username",
    NetworkPassword = "pwd"
};
Identities.Add(id);
HttpIdentity id = new HttpIdentity
{
    NetworkUsername = "username",
    NetworkPassword = "pwd"
};
Identities.Add(id);
$vbLabelText   $csharpLabel

Webキャッシュの有効化

開発中に再利用するために要求されたページをキャッシュします:

public override void Init()
{
    License.LicenseKey = "LicenseKey";
    this.LoggingLevel = WebScraper.LogLevel.All;
    this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
    EnableWebCache();
    this.Request("http://www.WebSite.com", Parse);
}
public override void Init()
{
    License.LicenseKey = "LicenseKey";
    this.LoggingLevel = WebScraper.LogLevel.All;
    this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
    EnableWebCache();
    this.Request("http://www.WebSite.com", Parse);
}
$vbLabelText   $csharpLabel

スロットリング

接続数および速度を制御します:

public override void Init()
{
    License.LicenseKey = "LicenseKey";
    this.LoggingLevel = WebScraper.LogLevel.All;
    this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
    this.MaxHttpConnectionLimit = 80;
    this.RateLimitPerHost = TimeSpan.FromMilliseconds(50);
    this.OpenConnectionLimitPerHost = 25;
    this.ObeyRobotsDotTxt = false;
    this.ThrottleMode = Throttle.ByDomainHostName;
    this.Request("https://www.Website.com", Parse);
}
public override void Init()
{
    License.LicenseKey = "LicenseKey";
    this.LoggingLevel = WebScraper.LogLevel.All;
    this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
    this.MaxHttpConnectionLimit = 80;
    this.RateLimitPerHost = TimeSpan.FromMilliseconds(50);
    this.OpenConnectionLimitPerHost = 25;
    this.ObeyRobotsDotTxt = false;
    this.ThrottleMode = Throttle.ByDomainHostName;
    this.Request("https://www.Website.com", Parse);
}
$vbLabelText   $csharpLabel

スロットリングプロパティ

  • MaxHttpConnectionLimit
    オープン HTTP リクエストの総許容数 (スレッド)
  • RateLimitPerHost
    指定されたドメインまたはIPアドレスへのリクエストの間の最小の丁寧な遅延(pause)
  • OpenConnectionLimitPerHost
    ホスト名または IP アドレスごとの HTTP リクエスト (スレッド) の同時実行可能数。
  • ThrottleMode
    ホスト名だけでなく、ホストサーバーの IP アドレスによっても、WebSraper がインテリジェントにリクエストをスロットルするようにします。 これにより、一つのマシンにホストされている複数のスクレイピングしたドメインに対して礼儀正しくなります。

付録

Windowsフォームアプリケーションを作成する方法?

Visual Studio 2013以上を使用します。

  1. Visual Studioを開きます。
    2.ファイル -> 新規作成 -> プロジェクト エンタープライズ2015

  2. Visual C#またはVB -> Windows -> Windowsフォームアプリケーションを選択。
    Windowsアプリを作成する

プロジェクト名: IronScraperSample 場所: ディスク上の場所を選択。

ASP.NET Webフォームアプリケーションを作成する方法?

  1. Visual Studioを開きます。
    エンタープライズ2015

2.ファイル -> 新規作成 -> プロジェクト ファイル新規プロジェクト

  1. Visual C#またはVB -> Web -> ASP.NET Webアプリケーション(.NET Framework)を選択。
    ASP .Net Webアプリケーション

プロジェクト名: IronScraperSample 場所: ディスク上の場所を選択。

  1. ASP.NETテンプレートから、空のテンプレートを選択しWebフォームをチェックします。
    ASP .Net テンプレート

  2. 基本的なASP.NET Webフォームプロジェクトが作成されます。
    ASP.Netウェブフォームプロジェクト

ここで完全なチュートリアルサンプルプロジェクトコードのプロジェクトをダウンロード

よくある質問

C#でWebサイトからデータをスクレイピングする方法は?

IronWebScraperを使用して、C#でWebサイトからデータをスクレイピングできます。まずNuGet経由でライブラリをインストールし、基本的なコンソールアプリケーションを設定して、効率的にWebデータを抽出し始めましょう。

C#でウェブスクレイピングを行うための前提条件は何ですか?

C#でウェブスクレイピングを行うには、C#またはVB.NETの基本的なプログラミングスキルを持ち、HTML、JavaScript、CSSなどのWeb技術を理解し、DOM、XPath、CSSセレクターに精通している必要があります。

どのように.NETプロジェクトにウェブスクレイピングライブラリをインストールできますか?

IronWebScraperを.NETプロジェクトにインストールするには、NuGetパッケージマネージャーコンソールでInstall-Package IronWebScraperコマンドを使用するか、Visual StudioのNuGetパッケージマネージャーインターフェイスを通じてインストールしてください。

自分のウェブスクレイパーにリクエストスロットリングを実装するにはどうすればいいですか?

IronWebScraperを使用すると、サーバーへのリクエストの頻度を管理するためにリクエストスロットリングを実装することができます。MaxHttpConnectionLimitRateLimitPerHostOpenConnectionLimitPerHostなどの設定を使用して構成できます。

ウェブスクレイピングでウェブキャッシュを有効にする目的は何ですか?

ウェブスクレイピングでウェブキャッシュを有効にすると、以前の応答を保存して再利用することで、サーバーに送信されるリクエストの数を減少させるのに役立ちます。IronWebScraperではEnableWebCacheメソッドを使用して設定できます。

Webスクレイピングで認証を処理する方法は?

IronWebScraperを使用すると、HttpIdentityを使用して認証を管理し、ログインフォームや制限された領域の背後にあるコンテンツにアクセスできるようにし、保護されたリソースのスクレイピングを可能にします。

C#でのウェブスクレイパーの簡単な例は何ですか?

『HelloScraper』はチュートリアルで提供されるシンプルな例です。IronWebScraperを使用して基本的なウェブスクレイパーを設定し、リクエストを開始し、応答を解析する方法を示しています。

複雑なページ構造を処理するためにウェブスクレイパーをどのように拡張できますか?

IronWebScraperを使用すると、さまざまなページタイプを処理するためにParseメソッドをカスタマイズし、フレキシブルなデータ抽出戦略を可能にすることで、複雑なページ構造を処理するためにスクレイパーを拡張することができます。

ウェブスクレイピングライブラリを使用する利点は何ですか?

IronWebScraperのようなウェブスクレイピングライブラリを使用することで、データ抽出の効率化、ドメイン管理、リクエストスロットリング、キャッシュ、認証対応のサポートなどの利点があり、ウェブスクレイピングタスクの効率的な処理が可能になります。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 128,072 | バージョン: 2025.12 リリース