Tools zum Erfassen und Konvertieren des Webs

PHP Scraper API mit GrabzItPHP Scraper API

Unsere PHP Scraper API ermöglicht es, die Leistung von GrabzIts Web Scraper zu Ihrer App hinzuzufügen. Dies ist eine viel bessere Lösung als die einfachen HTML-DOM-Parser, die normalerweise von PHP-Scraping-Apps implementiert werden.

Zunächst müssen Sie eine kratzer schaffen. Dann müssen Sie das Web in Ihrer App analysieren herunterladen die PHP-Bibliothek. Schauen Sie sich als Erstes den Beispiel-Handler an, der sich im Download befindet.

Verarbeiten Sie verkratzte Daten

Der einfachste Weg, um verkratzte Daten zu verarbeiten, besteht darin, auf die Daten als JSON- oder XML-Objekt zuzugreifen. Auf diese Weise können die Daten einfach manipuliert und abgefragt werden. Der JSON wird im folgenden allgemeinen Format mit dem Dataset-Namen als Objektattribut strukturiert. Selbst enthält ein Array von Objekten mit jedem Spaltennamen als ein anderes Attribut.

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

Zunächst muss beachtet werden, dass dem Handler alle extrahierten Daten gesendet werden. Dies kann Daten enthalten, die nicht in JSON- oder XML-Objekte konvertiert werden können. Daher muss die Art der Daten, die Sie erhalten, vor der Verarbeitung überprüft werden.

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

Das obige Beispiel zeigt, wie alle Ergebnisse des Datensatzes durchlaufen werden Dataset_Name. Führen Sie dann für jedes Ergebnis eine bestimmte Aktion aus, die vom Wert des Symbols abhängt Column_Two Attribut. Auch wenn die vom Handler empfangene Datei keine JSON-Datei ist, ist es einfach saved zum Ergebnisverzeichnis. Während die ScrapeResult-Klasse versucht sicherzustellen, dass alle veröffentlichten Dateien von GrabzIt-Servern stammen. Die Dateierweiterung sollte ebenfalls überprüft werden, bevor sie angezeigt wird saved.

ScrapeResult-Methoden

Nachfolgend sind alle Methoden der ScrapeResult-Klasse aufgeführt, die zum Verarbeiten von Scrape-Ergebnissen verwendet werden können.

  • string getExtension() - Ruft die Erweiterung einer Datei ab, die aus dem Scrape resultiert.
  • string getFilename() - Ruft den Dateinamen einer Datei ab, die aus dem Scrape resultiert.
  • object toJSON() - konvertiert alle aus dem Scrape resultierenden JSON-Dateien into ein Objekt.
  • string toString() - konvertiert alle aus dem Scrape resultierenden Dateien in eine string.
  • SimpleXMLElement toXML() - konvertiert jede aus dem Scrape resultierende XML-Datei in ein XML-Element.
  • boolean save($path) - saveWenn eine Datei aus dem Scrape resultiert, wird true zurückgegeben, wenn sie erfolgreich ist.

Fehlerbeseitigung

Der beste Weg, um Ihren PHP-Handler zu debuggen, ist das Herunterladen der Ergebnisse für ein Scrape von der Web-Scrapes Seite. Dann save Die Datei, mit der Sie ein Problem haben, befindet sich an einem zugänglichen Speicherort. Der Pfad dieser Datei kann dann an den Konstruktor der ScrapeResult-Klasse übergeben werden. Auf diese Weise können Sie Ihren Handler debuggen, ohne jedes Mal ein neues Scrape durchführen zu müssen (siehe unten).

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

//the rest of your handler code remains the same

Kratzer kontrollieren

Mit der Web Scraper API von GrabzIt können Sie den Status eines Scrapings ändern. Durch ferngesteuertes Starten, Stoppen, Aktivieren oder Deaktivieren eines Scrapes nach Bedarf. Dies wird im folgenden Beispiel gezeigt. Indem Sie die ID des Scrapes zusammen mit dem gewünschten Scrape-Status an das übermitteln SetScrapeStatus Methode.

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

Methoden und Eigenschaften von GrabzItScrapeClient

Nachfolgend sind alle Methoden und Eigenschaften der GrabzItScrapeClient-Klasse aufgeführt, mit denen die Web-Scrapes gesteuert werden können.

  • GrabzItScrape[] GetScrapes() - Gibt alle Scrapes des Benutzers als Array von GrabzItScrape-Objekten zurück.
  • GrabzItScrape GetScrapes($id) - gibt ein GrabzItScrape-Objekt zurück, das das gewünschte Scrape darstellt.
  • SetScrapeProperty($id, $property) - setzt den Eigentum eines Kratzbaums und gibt bei Erfolg true zurück.
  • SetScrapeStatus($id, $status) - Setzt den Status ("Start", "Stopp", "Aktivieren", "Deaktivieren") eines Scrapes und gibt bei Erfolg true zurück.
  • SendResult($id, $resultId) - Sendet das Ergebnis eines Scrapes erneut und gibt bei Erfolg true zurück.
    • Die Scrape-ID und die Ergebnis-ID finden Sie in der GetScrape-Methode.
  • SetLocalProxy($proxyUrl) - Legt fest, dass der lokale Proxy-Server für alle Anforderungen verwendet wird.