捕获和转换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) -设置要用于所有请求的本地代理服务器。