Heim >Backend-Entwicklung >PHP-Tutorial >Diffbot: Krabbeln mit visuellem maschinellem Lernen
Haben Sie sich jemals gefragt, wie soziale Netzwerke URL -Vorschau so gut machen, wenn Sie Links teilen? Woher wissen sie, welche Bilder zu sich nehmen, wen Sie als Autor zitieren sollen oder welche Tags an die Vorschau angeschlossen werden sollen? Ist alles mit komplexen Regexen über den Quellcode gekriecht? Meistens ist es nicht so. In der Quelle definierte Meta -Informationen können unzuverlässig sein, und Websites mit weniger als herausragender Ruf verwenden sie häufig als Keyword -Fluggesellschaften, um Suchmaschinen dazu zu bringen, sie höher zu bewerten. Sehen wir nicht das, was wir, die Menschen, vor uns sehen, was überhaupt wichtig ist?
Wenn Sie einen URL -Vorschau -Snippet oder einen Nachrichtenaggregator erstellen möchten, gibt es viele automatische Crawler online, sowohl proprietär als auch open Source, aber Sie finden selten etwas so Nische wie visuelles maschinelles Lernen. Genau das ist Diffbot - ein „visueller Lernroboter“, der eine URL, die Sie anfordern
Nachdem wir eine Theorie behandelt haben, werden wir in diesem Beitrag einen Demo -API -Anruf an einem der Beiträge von SitePoint durchführen.
Die PHP -Bibliothek für Diffbot ist etwas veraltet, und als solche werden wir sie in dieser Demo nicht verwenden. Wir werden rohe API -Anrufe durchführen und in einigen zukünftigen Beiträgen unsere eigene Bibliothek für die API -Interaktion erstellen.
Wenn Sie sich die PHP -Bibliothek trotzdem ansehen möchten, siehe hier und wenn Sie an Bibliotheken für andere Sprachen interessiert sind, hat Diffbot ein Verzeichnis.
Update, Juli 2015: Seit Veröffentlichung dieses Artikels wurde eine PHP -Bibliothek entwickelt. Sehen Sie sich hier den gesamten Entwicklungsprozess oder den Quellcode hier an.Wir sagten im Einführungsabschnitt, dass Diffbot die Anfrage vollständig macht und sie dann analysiert. Aber was ist mit JavaScript -Inhalten? Heutzutage rendern Websites häufig einige HTML über der Falte und beenden dann die CSS-, JS- und Dynamic -Inhalte, die danach geladen werden. Kann die Diffbot -API das sehen?
TatsächlichJa, ja. Diffbot rendert die Seite buchstäblich vollständig und inspiziert sie dann visuell, wie in meinem Stackoverflow -Q & A erläutert. Es gibt jedoch einige Einschränkungen. Stellen Sie also sicher, dass Sie die Antwort sorgfältig lesen.
Diffbot hat mehrere Verwendungsstufen. Es gibt eine kostenlose Testebene, die Ihr API -Token nach 7 Tagen oder 10000 Anrufen tötet, je nachdem, was zuerst kommt. Die kommerziellen Token können zu verschiedenen Preisen gekauft werden und läuft niemals ab, haben jedoch Einschränkungen. Open Source- und/oder Bildungsprojekte, die ein älteres Modell des kostenlosen Tokens liefern - 10.000 Anrufe pro Monat, einmal pro Sekunde max, liefert ein Sonderfall nach Fall. Sie müssen sie direkt kontaktieren, wenn Sie glauben, dass Sie sich qualifizieren.
Diffbot garantiert eine hohe Verfügbarkeit, aber manchmal passieren Misserfolge - insbesondere in der ressourcenintensivsten API des Haufen: Crawlbot. Crawlbot wird verwendet, um ganze Domänen zu kriechen, nicht nur einzelne Seiten und als solche eine geringere Zuverlässigkeitsrate als andere APIs. Nicht viel, sondern genug, um im API -Gesundheitsbildschirm auffällig zu sein - auf dem Bildschirm, den Sie überprüfen können, um festzustellen, ob eine API in Betrieb ist oder derzeit nicht verfügbar ist, wenn Ihre Anrufe auf Probleme oder Rückgabefehler 500 eingehen.
Um Ihre Umgebung vorzubereiten, starten Sie bitte ein Gehöft verbessert.
Erstellen Sie ein Starter-Laravel-Projekt, indem Sie mit Vagrant SSH in den VM in den Codeordner eingehen und den Komponisten erstellen, project laravel/laravel Laravel-Prefer-Dist. Auf diese Weise können Sie über http://homestead.app:8000 aus dem Browser des Hosts auf die Laravel -Grußseite zugreifen.
in App/Routes.php fügen Sie die folgende Route hinzu:
<span>Route<span>::</span>get('/diffbot', 'HomeController@diffbotDemo');</span>
In App/Controllern/Homecontroller fügen Sie die folgende Aktion hinzu:
<span>public function diffbotDemo() { </span> <span>die("hi"); </span> <span>}</span>
Wenn http://homestead.app:8000/diffbot jetzt auf dem Bildschirm "Hallo" ausgibt, können wir mit der API mit dem Spielen beginnen.
Um mit der Diffbot -API zu interagieren, benötigen Sie ein Token. Melden Sie sich für eine auf ihrer Preisseite an. Um diese Demo willen, nennen wir unser Token $ token, und wir werden sie als solche in URLs bezeichnen. Ersetzen Sie $ token gegebenenfalls durch Ihren eigenen Wert.
Wir werden Guzzle als unseren HTTP -Client verwenden. Es ist nicht erforderlich, aber ich empfehle, dass Sie sich damit durch einen früheren Artikel von uns vertraut machen.
Fügen Sie Ihrem Composer.json den "gnuzzleHttp/guzzle": "4.1.*@dev" hinzu, so
"require": { "laravel/framework": "4.2.*", "guzzlehttp/guzzle": "4.1.*@dev" },Führen Sie im Projektroot den Komponisten -Update aus.
Artikeldaten
<span>public function diffbotDemo() { </span> <span>$token = "<span><span>$TOKEN</span>"</span>; </span> <span>$version = 'v3'; </span> <span>$client = new GuzzleHttp<span>\Client</span>(['base_url' => 'http://api.diffbot.com/']); </span> <span>$response = $client->get($version.'/article', ['query' => [ </span> <span>'token' => $token, </span> <span>'url' => 'https://www.sitepoint.com/7-mistakes-commonly-made-php-developers/' </span> <span>]]); </span> <span>die(var_dump($response->json())); </span> <span>}</span>Zuerst haben wir unser Token festgelegt. Dann definieren wir eine Variable, die die API -Version enthält. Als nächstes liegt es an uns, einen neuen Kunden zu erstellen, und wir geben ihm auch eine Basis -URL, sodass wir ihn nicht jedes Mal eingeben müssen, wenn wir eine andere Anfrage stellen.
Als nächstes erstellen wir ein Antwortobjekt, indem wir eine GET -Anforderung an die URL der API senden, und wir fügen ein Array von Abfrageparametern in Key => Wertformat hinzu. In diesem Fall passieren wir nur am Token und der URL, die grundlegendsten Parameter.
Da die Diffbot -API JSON -Daten zurückgibt, verwenden wir die JSON () -Methode von Guzzle, um sie automatisch in ein Array zu dekodieren. Wir zeichnen diese Daten dann ziemlich ab:
Wie Sie sehen, haben wir einige Informationen ziemlich schnell zurückbekommen. Es gibt das Ikone, das verwendet wurde, eine Vorschau des Textes, der Titel, sogar die Sprache, das Datum und die HTML wurden zurückgegeben. Sie werden jedoch feststellen, dass es keinen Autor gibt. Ändern wir dies und fordern Sie einige weitere Werte an.
Wenn wir der Liste der Abfrageparameter den Parameter „Felder“ hinzufügen und ihm einen Wert von „Tags“ geben, versucht Diffbot, Tags/Kategorien aus der bereitgestellten URL zu extrahieren. Fügen Sie diese Zeile dem Abfragearray hinzu:
<span>Route<span>::</span>get('/diffbot', 'HomeController@diffbotDemo');</span>
und ändern
<span>public function diffbotDemo() { </span> <span>die("hi"); </span> <span>}</span>Auf dem Bildschirm erfrischen Sie uns jetzt Folgendes:
Gibt es eine Möglichkeit, die Tags aus dem Quellcode zu erhalten, wenn man sie wirklich braucht? Können wir diffbot den Autor in SitePoint -Artikeln anerkennen lassen? Ja. Mit der benutzerdefinierten API.
Meta -Tags und Autor mit benutzerdefinierter API
Gehen Sie zum Dev Dashboard und melden Sie sich mit Ihrem Token an. Dann gehen Sie in "benutzerdefinierte API". Aktivieren Sie unten die Registerkarte "Eine Regel erstellen" und geben Sie die URL des Artikels ein, die wir in das URL -Feld kriechen, und klicken Sie dann auf Test. Ihr Bildschirm sollte ungefähr so aussehen:
Sie werden sofort bemerken, dass das Feld des Autors leer ist. Sie können die Regel der Autorsuche optimieren, indem Sie daneben klicken und das Autorenelement im geöffneten Live-Vorschau-Fenster finden, und dann darauf klicken, um das gewünschte Ergebnis zu erhalten. Aufgrund einiger weniger als perfekter CSS am Ende von SitePoint ist es jedoch sehr schwierig, die API von Diffbot mit einem konsistenten Weg zum Autornamen zu liefern, insbesondere durch Klicken auf Elemente. Fügen Sie stattdessen die folgende Regel manuell hinzu: .Contributor-large .Contributor_name a und klicken Sie auf Speichern.
Sie werden feststellen
Schritt 1: Definieren Sie eine Sammlung
Schritt 2: Sammlungsfelder
<span>Route<span>::</span>get('/diffbot', 'HomeController@diffbotDemo');</span>Wenn Sie jetzt die URL aktualisieren, mit der wir getestet haben (http://homestead.app:8000/diffbot), werden Sie feststellen, dass die Werte des Autors und der Meta -Tags vorhanden sind. Hier ist die Ausgabe, die die obige Codezeile erzeugt:
Diffbot ist ein leistungsstarker Datenextraktor für das Web-ob Sie viele Websites in einen einzelnen Suchindex konsolidieren müssen, ohne ihre Back-Ends zu kombinieren, einen Nachrichtenaggregator zu erstellen, eine Idee für eine URL-Vorschau-Webkomponente oder eine URL-Vorschau-Webkomponente haben möchten oder Diffbot kann regelmäßig den Inhalt der öffentlichen Preislisten der Teilnehmer öffentlichen. Mit toten einfachen API -Aufrufen und hoch strukturierten Antworten werden Sie in kürzester Zeit in Betrieb sein. In einem späteren Artikel werden wir eine brandneue API für die Verwendung von Diffbot mit PHP erstellen und die obigen Anrufe mit ihr wiederholen. Wir hosten die Bibliothek auch auf Packagist, sodass Sie sie problemlos mit Komponisten installieren können. Bleib dran!
Welche Branchen können von der Verwendung von Diffbot profitieren? Diffbot. Dies umfasst Marketing, Forschung, Journalismus, E-Commerce und mehr. Jede Branche, die auf das Sammeln und Analysieren von Daten aus dem Web beruht, kann möglicherweise von der Verwendung von Diffbot profitieren. zur Verwendung von Technologie für maschinelles Lernen. Dies ermöglicht es ihm, Webseiten auf eine Weise zu verstehen und zu interpretieren, die der Art und Weise ähnlich ist, wie ein Mensch es zu einem leistungsstarken und genauen Werkzeug für die Datenextraktion macht. Wie bei jedem Tool kann seine Wirksamkeit jedoch von den spezifischen Anforderungen des Benutzers abhängen. Es wird von einer Vielzahl von Unternehmen und Branchen verwendet, um Daten aus dem Web zu sammeln und zu analysieren. Die Verwendung der Technologie für maschinelles Lernen ermöglicht es ihnen, relevante Daten genau zu extrahieren, was sie zu einem vertrauenswürdigen Tool für die Datenextraktion macht.
Das obige ist der detaillierte Inhalt vonDiffbot: Krabbeln mit visuellem maschinellem Lernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!