웹 캡처 및 변환 도구

GrabzIt을 이용한 PHP Scraper APIPHP 스크레이퍼 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) - 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 메서드 및 속성

웹 스크랩을 제어하는 ​​데 사용할 수있는 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) -모든 요청에 ​​사용할 로컬 프록시 서버를 설정합니다.