PHP Scraper APIを使用すると、GrabzItのWeb Scraperの機能をアプリに追加できます。 これは、PHPスクレイピングアプリによって通常実装される単純なHTML DOMパーサーよりもはるかに優れたソリューションです。
始めるには スクレイプを作成する。 次に、アプリでウェブを解析するには、次のことを行う必要があります ダウンロード 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クラスのすべてのメソッドをリストします。
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/"); } //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); }
Webスクレイプの制御に使用できるGrabzItScrapeClientクラスのすべてのメソッドとプロパティを以下にリストします。