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

GrabzItを使用したPHP Scraper APIPHP Scraper API

PHP Scraper APIを使用すると、GrabzItのWeb Scraperの機能をアプリに追加できます。 これは、PHPスクレイピングアプリによって通常実装される単純なHTML DOMパーサーよりもはるかに優れたソリューションです。

始めるには スクレイプを作成する。 次に、アプリでウェブを解析するには、次のことを行う必要があります download PHPライブラリ。 最後に、開始するには、ダウンロード内にあるハンドラーの例を見てください。

スクラップデータの処理

スクレイピングされたデータを処理する最も簡単な方法は、JSONまたはXMLオブジェクトとしてデータにアクセスすることです。 これにより、データを簡単に操作および照会できます。 JSONは、オブジェクト属性としてデータセット名を使用して、次の一般的な形式で構造化されます。 各列名を別の属性として持つオブジェクトの配列を含む自身。

{
  "Dataset_Name": [
    {
      "Column_One": "https://grabz.it/",
      "Column_Two": "Found"
    },
    {
      "Column_One": "http://dfadsdsa.com/",
      "Column_Two": "Missing"
    }]
}

まず、抽出されたすべてのデータがハンドラーに送信されることを覚えておく必要があります。 これには、JSONまたはXMLオブジェクトに変換できないデータが含まれる場合があります。 したがって、受信するデータのタイプは、処理する前に確認する必要があります。

$scrapeResult = new \GrabzIt\Scraper\ScrapeResult();

if ($scrapeResult->getExtension() == 'json')
{
    $json = $scrapeResult->toJSON();
    foreach ($json->Dataset_Name as $obj)
    {
        if ($obj->Column_Two == "Found")
        {
            //do something
        }
        else
        {
            //do something else
        }
    }
}
else
{
    //probably a binary file etc save it
    $scrapeResult->save("results/".$scrapeResult->getFilename());
}

上記の例は、データセットのすべての結果をループする方法を示しています Dataset_Name。 次に、各結果に対して、の値に応じて特定のアクションを実行します Column_Two 属性。 また、ハンドラーが受信したファイルがJSONファイルではない場合、 savedを結果ディレクトリに。 ScrapeResultクラスは、投稿されたすべてのファイルがGrabzItのサーバーからのものであることを保証しようとします。 ファイルの拡張子もチェックする必要があります saved.

ScrapeResultメソッド

以下に、スクレイプ結果の処理に使用できるScrapeResultクラスのすべてのメソッドをリストします。

  • string getExtension() -スクレイプから生じたファイルの拡張子を取得します。
  • string getFilename() -スクレイプの結果のファイルのファイル名を取得します。
  • object toJSON() -スクレイプから生じるJSONファイルを変換します intoオブジェクト。
  • string toString() -スクレイプから生じるファイルを string.
  • SimpleXMLElement toXML() -スクレイプから生成されたXMLファイルをXML要素に変換します。
  • boolean save($path) - save■スクレイプの結果のファイル。成功した場合はtrueを返します。

デバッギング

PHPハンドラーをデバッグする最良の方法は、スクレイプの結果をダウンロードすることです ウェブスクレイプ ページ。 それから save アクセス可能な場所に問題があるファイル。 その後、このファイルのパスをScrapeResultクラスのコンストラクターに渡すことができます。 これにより、次に示すように、毎回新しいスクレイプを行うことなくハンドラーをデバッグできます。

$scrapeResult = new \GrabzIt\Scraper\ScrapeResult("data.json");

//the rest of your handler code remains the same

スクレイプの制御

GrabzItのWeb Scraper APIを使用すると、スクレイプのステータスを変更できます。 必要に応じて、リモートでスクレイプを開始、停止、有効化、または無効化します。 これを以下の例に示します。 目的のスクレイプステータスとともにスクレイプのIDを SetScrapeStatus 方法。

$client = new \GrabzIt\Scraper\GrabzItScrapeClient("Sign in to view your Application Key", "Sign in to view your Application Secret");
//Get all of our scrapes
$myScrapes = $client->GetScrapes();
if (empty($myScrapes))
{
    throw new Exception("You haven't created any scrapes yet! Create one here: https://grabz.it/scraper/scrape.aspx");
}
//Start the first scrape
$client->SetScrapeStatus($myScrapes[0]->ID, "Start");
if (count($myScrapes[0]->Results) > 0)
{
    //re-send first scrape result if it exists
    $client->SendResult($myScrapes[0]->ID, $myScrapes[0]->Results[0]->ID);
}

GrabzItScrapeClientのメソッドとプロパティ

Webスクレイプの制御に使用できるGrabzItScrapeClientクラスのすべてのメソッドとプロパティを以下にリストします。

  • GrabzItScrape[] GetScrapes() -すべてのユーザースクレイプをGrabzItScrapeオブジェクトの配列として返します。
  • GrabzItScrape GetScrape($id) -目的のスクレイプを表すGrabzItScrapeオブジェクトを返します。
  • SetScrapeProperty($id, $property) -設定します 擦り傷の性質 成功した場合はtrueを返します。
  • SetScrapeStatus($id, $status) -スクレイプのステータス(「開始」、「停止」、「有効」、「無効」)を設定し、成功した場合はtrueを返します。
  • SendResult($id, $resultId) -スクレイプの結果を再送信し、成功した場合はtrueを返します。
    • スクレイプIDと結果IDは、GetScrapeメソッドから見つけることができます。
  • SetLocalProxy($proxyUrl) -すべての要求に使用されるローカルプロキシサーバーを設定します。