捕獲和轉換Web的工具

帶有GrabzIt的PHP Scraper APIPHP Scraper API

我們的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方法

下面列出的是ScrapeResult類的所有方法,可用於處理抓取結果。

  • string getExtension() -獲取由刮擦產生的任何文件的擴展名。
  • string getFilename() -獲取刮擦產生的任何文件的文件名。
  • object toJSON() -轉換由刮擦產生的任何JSON文件 into一個對象。
  • string toString() -將刮擦產生的任何文件轉換為 string.
  • SimpleXMLElement toXML() -將由抓取產生的所有XML文件轉換為XML元素。
  • boolean save($path) - saves由刮擦產生的任何文件,如果成功,則返回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方法和屬性

下面列出了GrabzItScrapeClient類的所有方法和屬性,可用於控制Web抓取。

  • GrabzItScrape[] GetScrapes() -將所有用戶抓取作為GrabzItScrape對象的數組返回。
  • GrabzItScrape GetScrape($id) -返回代表所需抓取的GrabzItScrape對象。
  • SetScrapeProperty($id, $property) -設置 刮擦的性質 如果成功,則返回true。
  • SetScrapeStatus($id, $status) -設置刮擦的狀態(“開始”,“停止”,“啟用”,“禁用”),如果成功,則返回true。
  • SendResult($id, $resultId) -重新發送抓取的結果,如果成功,則返回true。
    • 可以從GetScrape方法中找到刮擦ID和結果ID。
  • SetLocalProxy($proxyUrl) -設置要用於所有請求的本地代理服務器。