Herramientas para capturar y convertir la web

PHP Scraper API con GrabzItAPI PHP Scraper

Nuestra API PHP Scraper permite agregar el poder de GrabzIt's Web Scraper a su aplicación. Esta es una solución mucho mejor que los analizadores HTML DOM simples, generalmente implementados por aplicaciones de raspado de PHP.

Para empezar debes crear un rasgu√Īo. Luego, para analizar la web en su aplicaci√≥n, debe descargar La biblioteca PHP. Finalmente, para comenzar, mire el controlador de ejemplo ubicado dentro de la descarga.

Procesar datos raspados

La forma m√°s f√°cil de procesar datos raspados es acceder a los datos como un objeto JSON o XML. Como esto permite que los datos sean f√°cilmente manipulados y consultados. El JSON se estructurar√° en el siguiente formato general, con el nombre del conjunto de datos como el atributo del objeto. Contiene una matriz de objetos con cada nombre de columna como otro atributo.

{
  "Dataset_Name": [
    {
      "Column_One": "https://grabz.it/",
      "Column_Two": "Found"
    },
    {
      "Column_One": "http://dfadsdsa.com/",
      "Column_Two": "Missing"
    }]
}

En primer lugar, debe recordarse que al controlador se le enviarán todos los datos extraídos. Esto puede incluir datos que no se pueden convertir a objetos JSON o XML. Por lo tanto, el tipo de datos que está recibiendo debe verificarse antes de ser procesado.

$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());
}

El ejemplo anterior muestra c√≥mo recorrer todos los resultados del conjunto de datos Dataset_Name. Luego, para cada resultado, realice una acci√≥n espec√≠fica seg√ļn el valor de Column_Two atributo. Adem√°s, si el archivo recibido por el controlador no es un archivo JSON, entonces es solo saved al directorio de resultados. Mientras que la clase ScrapeResult intenta asegurarse de que todos los archivos publicados se originen en los servidores de GrabzIt. La extensi√≥n de los archivos tambi√©n debe verificarse antes de que sean saved.

Métodos de ScrapeResult

A continuación se enumeran todos los métodos de la clase ScrapeResult que se pueden usar para procesar resultados de raspado.

  • string getExtension() - Obtiene la extensi√≥n de cualquier archivo resultante del raspado.
  • string getFilename() - obtiene el nombre de archivo de cualquier archivo resultante del raspado.
  • object toJSON() - convierte cualquier archivo JSON resultante del raspado into un objeto.
  • string toString() - convierte cualquier archivo resultante del raspado a un string.
  • SimpleXMLElement toXML() - Convierte cualquier archivo XML resultante del raspado en un elemento XML.
  • boolean save($path) - saves cualquier archivo resultante del raspado, devuelve verdadero si tiene √©xito.

Depuración

La mejor manera de depurar su controlador PHP es descargar los resultados para un raspado del rasgu√Īos web p√°gina. Entonces save el archivo con el que tiene un problema en una ubicaci√≥n accesible. La ruta de este archivo se puede pasar al constructor de la clase ScrapeResult. Esto le permite depurar su controlador sin tener que hacer un nuevo raspado cada vez, como se muestra a continuaci√≥n.

$scrapeResult = new \GrabzIt\Scraper\ScrapeResult("data.json");

//the rest of your handler code remains the same

Control de un raspado

Con la API de Web Scraper de GrabzIt puede cambiar el estado de un raspado. Al iniciar, detener, habilitar o deshabilitar remotamente un raspado seg√ļn sea necesario. Esto se muestra en el siguiente ejemplo. Al pasar la ID del raspado junto con el estado de raspado deseado al SetScrapeStatus m√©todo.

$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);
}

Métodos y propiedades de GrabzItScrapeClient

A continuación se enumeran todos los métodos y propiedades de la clase GrabzItScrapeClient que se pueden usar para controlar los raspados web.

  • GrabzItScrape[] GetScrapes() - devuelve todos los scrapes de los usuarios como una matriz de objetos GrabzItScrape.
  • GrabzItScrape GetScrape($id) - devuelve un objeto GrabzItScrape que representa el raspado deseado.
  • SetScrapeProperty($id, $property) - establece el propiedad de un rasgu√Īo y devuelve verdadero si tiene √©xito.
  • SetScrapeStatus($id, $status) - establece el estado ("Inicio", "Detener", "Activar", "Desactivar") de un raspado y devuelve verdadero si tiene √©xito.
  • SendResult($id, $resultId) - reenv√≠a el resultado de un raspado y devuelve verdadero si tiene √©xito.
    • El id de scrape y el id de resultado se pueden encontrar en el m√©todo GetScrape.
  • SetLocalProxy($proxyUrl) - establece el servidor proxy local que se utilizar√° para todas las solicitudes.