Tools zum Erfassen und Konvertieren des Webs

Web Scraper API für Python Python Scraper API

Zunächst herunterladen Sehen Sie sich die Web Scraper-API für Python an und beginnen Sie mit dem Beispielhandler, der sich im Inneren befindet.

Verarbeiten Sie verkratzte Daten

Der einfachste Weg, um verkratzte Daten zu verarbeiten, besteht darin, auf die Daten als JSON- oder XML-Objekt zuzugreifen, da dies eine einfache Manipulation und Abfrage der Daten ermöglicht. Der JSON wird im folgenden allgemeinen Format mit dem Dataset-Namen als Objektattribut strukturiert. Er enthält selbst ein Array von Objekten, wobei jeder Spaltenname ein anderes Attribut ist.

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

Zuallererst muss beachtet werden, dass dem Handler alle verkratzten Daten gesendet werden, einschließlich Daten, 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 = ScrapeResult.ScrapeResult()

if scrapeResult.getExtension() == 'json':
    json = scrapeResult.toJSON()
    for json["Dataset_Name"] in 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 und führen Sie spezifische Aktionen aus, die vom Wert des 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, sollte die Erweiterung der Dateien ebenfalls überprüft werden, bevor sie vorliegen 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.
  • xml.etree.ElementTree 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 Python-Handler zu debuggen, ist das Herunterladen der Ergebnisse für ein Scrape von der Web-Scrapes Seite save die Datei, mit der Sie ein Problem haben, an einen zugänglichen Speicherort und übergeben Sie den Pfad dieser Datei an den Konstruktor der ScrapeResult-Klasse. Auf diese Weise können Sie Ihren Handler debuggen, ohne jedes Mal ein neues Scrape ausführen zu müssen, wie unten gezeigt.

scrapeResult = ScrapeResult.ScrapeResult("data.json");

#the rest of your handler code remains the same

Kratzer kontrollieren

Mit der Web Scraper API für Python von GrabzIt können Sie ein Scrape bei Bedarf remote starten, stoppen, aktivieren oder deaktivieren. Dies wird im folgenden Beispiel gezeigt, in dem die ID des Scrapes zusammen mit dem neuen Scrape-Status an das übergeben wird SetScrapeStatus Methode.

client = GrabzItScrapeClient.GrabzItScrapeClient("Sign in to view your Application Key", "Sign in to view your Application Secret")
//Get all of our scrapes
myScrapes = client.GetScrapes()
if (len(myScrapes) == 0)
{
    raise Exception('You have not created any scrapes yet! Create one here: https://grabz.it/scraper/scrape.aspx')
}
//Start the first scrape
client.SetScrapeStatus(myScrapes[0].ID, "Start")
if (len(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 Status-Scrapes gesteuert werden können.

  • GrabzItScrape[] GetScrapes() - Gibt alle Scrapes des Benutzers als Array von GrabzItScrape-Objekten zurück.
  • GrabzItScrape GetScrape(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.