まず第一に ダウンロード Web Scraper API for ASP.NETを使用し、サンプルWebプロジェクトにあるhandler.ashxを調べて開始します。
スクレイピングされたデータを処理する最も簡単な方法は、JSONまたはXMLオブジェクトとしてデータにアクセスすることです。これにより、データを簡単に操作およびクエリできるようになります。 JSONは、データセット名をオブジェクト属性として、次の一般的な形式で構造化されます。データセット名には、各列名を別の属性として持つオブジェクトの配列が含まれます。
{ "Items": [ { "Column_One": "https://grabz.it/", "Column_Two": "Found" }, { "Column_One": "http://dfadsdsa.com/", "Column_Two": "Missing" }] }
まず、ハンドラーはすべてのスクレイピングされたデータを送信することに注意する必要があります。これには、JSONまたはXMLオブジェクトに変換できないデータが含まれる場合があります。 したがって、受信するデータのタイプは、処理する前に確認する必要があります。
ただし、ASP.NET APIでは、JSONまたはXMLファイルを読み取るために追加の手順が必要です。JSONまたはXMLファイルでは、予想されるデータ構造に一致するクラスが作成されます。 この例を以下に示します。上記のJSONデータ構造を保持するために2つのクラス定義が作成されました。
public class DataSet { public List<Item> Items; } public class Item { public string Column_One; public string Column_Two; }
これらのクラスは、JSONファイルの変換に使用されるようになりました int使用可能なオブジェクト構造。 以下の例では、以下のScrapeResultコンストラクターはHttpRequestクラスを受け取りますが、ASP.NET MVC Webプロジェクトと互換性を持たせるためにHttpRequestBaseクラスも受け入れます。
ScrapeResult scrapeResult = new ScrapeResult(context.Request); if (scrapeResult.Extension == "json") { DataSet dataSet = scrapeResult.FromJSON<DataSet>(); foreach (Item item in dataSet.Items) { if (item.Column_Two == "Found") { //do something } else { //do something else } } } else { //probably a binary file etc save it scrapeResult.save(context.Server.MapPath("~/results/" + scrapeResult.Filename)); }
上記の例は、データセットクラスのすべての結果をループし、値に応じて特定のアクションを実行する方法を示しています Column_Two
プロパティ。 また、ハンドラーが受信したファイルがJSONファイルではない場合、 savedを結果ディレクトリに。 ScrapeResultクラスは、投稿されたすべてのファイルがGrabzItのサーバーからのものであることを保証しようとしますが、ファイルの拡張子もチェックする必要があります。 saved.
以下に、スクレイプ結果の処理に使用できるScrapeResultクラスのすべてのメソッドとプロパティを示します。
ASP.NETハンドラーをデバッグする最良の方法は、スクレイプの結果をダウンロードすることです ウェブスクレイプ ページ save 問題のあるファイルをアクセス可能な場所に配置し、そのファイルのパスをScrapeResultクラスのコンストラクターに渡します。 これにより、以下に示すように、毎回新しいスクレイプを実行することなく、ハンドラーをデバッグできます。
ScrapeResult scrapeResult = new ScrapeResult("data.json"); #the rest of your handler code remains the same
GrabzItのWeb Scraper APIを使用すると、必要に応じてスクレイプのステータスを変更したり、スクレイプを開始、停止、または無効にしたりすることもできます。 以下の例では、スクレイプのIDを提供する目的のスクレイプステータスとともに渡します。 ScrapeStatus
列挙する SetScrapeStatus
方法。
GrabzItScrapeClient client = new GrabzItScrapeClient("Sign in to view your Application Key", "Sign in to view your Application Secret"); //Get all of our scrapes GrabzItScrape[] myScrapes = client.GetScrapes(); if (myScrapes.Length == 0) { throw new Exception("You haven't created any scrapes yet! Create one here: https://grabz.it/scraper/scrape/"); } //Start the first scrape client.SetScrapeStatus(myScrapes[0].ID, ScrapeStatus.Start); if (myScrapes[0].Results.Length > 0) { //re-send first scrape result if it exists client.SendResult(myScrapes[0].ID, myScrapes[0].Results[0].ID); }
以下は、スクレイプの制御に使用できるGrabzItScrapeClientクラスのすべてのメソッドとプロパティです。