捕获和转换Web的工具

带有GrabzIt的PHP Scraper API

PHP 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类的所有方法,可用于处理抓取结果。

调试

调试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);
}

GrabzItScrapeClient方法和属性

下面列出了GrabzItScrapeClient类的所有方法和属性,可用于控制Web抓取。