Webをキャプチャして変換するツール

ASP.NET用のWeb Scraper API

ASP.NET Scraper API

まず第一に ダウンロード 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のメソッドとプロパティ

以下に、スクレイプ結果の処理に使用できる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のメソッドとプロパティ

以下は、スクレイプの制御に使用できるGrabzItScrapeClientクラスのすべてのメソッドとプロパティです。

  • SetLocalProxy(string proxyUrl) -すべての要求に使用するローカルプロキシサーバーを設定します。