Maison >développement back-end >tutoriel php >Diffbot: ramper avec l'apprentissage de la machine visuelle
Vous êtes-vous déjà demandé comment les réseaux sociaux ont-ils si bien des prévisualisation lorsque vous partagez des liens? Comment savent-ils quelles images saisir, qui citer en tant qu'auteur, ou quelles balises attacher à l'aperçu? Est-ce que tout a rampant avec des regexxins complexes sur le code source? En fait, le plus souvent, ce n'est pas le cas. Les méta-informations définies dans la source peuvent être peu fiables, et les sites avec une réputation moins que stellaire les utilisent souvent comme transporteurs de mots clés, essayant d'amener les moteurs de recherche pour les classer plus haut. N'est-ce pas ce que nous, les humains, voyons devant nous ce qui compte de toute façon?
Si vous souhaitez créer un extrait d'aperçu de l'URL ou un agrégateur de nouvelles, il existe de nombreux robots automatiques disponibles en ligne, propriétaires et open source, mais vous trouvez rarement quelque chose d'aussi de niche que l'apprentissage de la machine visuelle. C'est exactement ce que Diffbot est - un «robot d'apprentissage visuel» qui rend une URL que vous demandez en entier, puis extrait visuellement des données, en aidant avec certaines métadonnées de la source de page au besoin.
Après avoir couvert une théorie, dans ce post, nous ferons un appel API de démonstration à l'un des messages de SitePoint.
La bibliothèque PHP pour Diffbot est quelque peu obsolète, et en tant que telle, nous ne l'utiliserons pas dans cette démo. Nous effectuerons des appels API bruts, et dans certains articles futurs, nous créerons notre propre bibliothèque pour l'interaction API.
Si vous souhaitez consulter la bibliothèque PHP néanmoins, voir ici, et si vous êtes intéressé par les bibliothèques pour d'autres langues, Diffbot a un répertoire.
MISE À JOUR, juillet 2015: Une bibliothèque PHP a été développée depuis la publication de cet article. Voir l'ensemble de son processus de développement ici, ou le code source ici.Nous avons dit dans la section d'introduction que Diffbot rend la demande en entier, puis l'analyse. Mais qu'en est-il du contenu JavaScript? De nos jours, les sites Web rendent souvent un HTML au-dessus du pli, puis terminent le chargement CSS, JS et le contenu dynamique par la suite. L'API Diffbot peut-elle voir cela?
En fait, oui. Diffbot rend littéralement la page dans son intégralité, puis l'inspecte visuellement, comme expliqué dans ma Q&R StackOverflow ici. Il y a cependant quelques mises en garde, alors assurez-vous de lire attentivement la réponse.
diffbot a plusieurs niveaux d'utilisation. Il y a un niveau d'essai gratuit qui tue votre jeton API après 7 jours ou 10000 appels, selon la première éventualité. Les jetons commerciaux peuvent être achetés à différents prix et ne pas expirer, mais ont des limites. Une approche spéciale de cas par cas est offerte à des projets open source et / ou éducatifs qui fournit un modèle plus ancien du jeton gratuit - 10K appels par mois, une fois par seconde maximum, mais ne s'expire jamais. Vous devez les contacter directement si vous pensez que vous êtes qualifié.
Diffbot garantit une hausse élevée, mais les échecs se produisent parfois - en particulier dans l'API la plus intensive des ressources du groupe: Crawlbot. Crawlbot est utilisé pour ramper des domaines entiers, pas seulement des pages individuelles, et en tant que tel a un taux de fiabilité plus faible que les autres API. Pas beaucoup, mais suffisamment pour être perceptible dans l'écran de santé de l'API - l'écran que vous pouvez vérifier pour voir si une API est opérationnelle ou actuellement indisponible si vos appels ont des problèmes ou de retour d'erreur 500.
Pour préparer votre environnement, veuillez démarrer une instance améliorée de propriété familiale.
Créez un projet Laravel Starter en SSHing dans la machine virtuelle avec SSH Vagrant, en entrant dans le dossier de code et en exécutant le compositeur Create-Project Laravel / Laravel Laravel --Prefer-Dist. Cela vous permettra d'accéder à la page de salutation Laravel via http://homestead.app:8000 du navigateur de l'hôte.
dans app / routes.php Ajoutez la route suivante:
<span>Route<span>::</span>get('/diffbot', 'HomeController@diffbotDemo');</span>
Dans les applications / contrôleurs / HomeController, ajoutez l'action suivante:
<span>public function diffbotDemo() { </span> <span>die("hi"); </span> <span>}</span>
Si http://homestead.app:8000/diffbot publie maintenant "Salut" à l'écran, nous sommes prêts à commencer à jouer avec l'API.
Pour interagir avec l'API Diffbot, vous avez besoin d'un jeton. Inscrivez-vous à un sur leur page de prix. Pour le bien de cette démo, appelons notre jeton Token $, et nous nous y référerons en tant que tels dans les URL. Remplacez $ jeton par votre propre valeur le cas échéant.
Nous utiliserons Guzzle comme client HTTP. Ce n'est pas nécessaire, mais je vous recommande de vous familiariser avec un de notre précédent article.
Ajoutez le "Guzzlehttp / Guzzle": "4.1.*@dev" à votre composer.json pour que le bloc requis ressemble à ceci:
"require": { "laravel/framework": "4.2.*", "guzzlehttp/guzzle": "4.1.*@dev" },
Dans la racine du projet, exécutez la mise à jour du compositeur.
Dans le premier exemple, nous allons ramper une publication SitePoint avec l'API de l'article par défaut de Diffbot. Pour ce faire, nous nous référons aux documents qui font un excellent travail pour expliquer le flux de travail. Changez le corps de l'action DiffbotDemo en code suivant:
<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>
Tout d'abord, nous définissons notre jeton. Ensuite, nous définissons une variable qui tiendra la version API. Ensuite, c'est à nous de créer un nouveau client Guzzle, et nous lui donnons également une URL de base afin que nous n'ayons pas à le taper chaque fois que nous faisons une autre demande.
Ensuite, nous créons un objet de réponse en envoyant une demande GET à l'URL de l'API, et nous ajoutons un tableau de paramètres de requête dans le format KEY => Value. Dans ce cas, nous ne faisons que le jeton et l'URL, les paramètres les plus élémentaires.
Enfin, puisque l'API Diffbot renvoie les données JSON, nous utilisons la méthode JSON () de Guzzle pour la décoder automatiquement dans un tableau. Nous impriment ensuite ces données:
Comme vous pouvez le voir, nous avons récupéré quelques informations assez rapidement. Il y a l'icône qui a été utilisée, un aperçu du texte, le titre, même la langue, la date et le HTML ont été retournés. Vous remarquerez cependant qu'il n'y a pas d'auteur. Changeons cela et demandons quelques valeurs supplémentaires.
Si nous ajoutons le paramètre «Fields» à la liste des paramètres de requête et lui donnons une valeur de «balises», Diffbot tentera d'extraire des balises / catégories de l'URL fournie. Ajoutez cette ligne au tableau de requête:
<span>Route<span>::</span>get('/diffbot', 'HomeController@diffbotDemo');</span>
puis modifiez la partie de la matrice:
<span>public function diffbotDemo() { </span> <span>die("hi"); </span> <span>}</span>
rafraîchissant l'écran nous donne maintenant ceci:
Mais, le code source de l'article note plusieurs autres balises:
Pourquoi le résultat est-il si différent? C’est précisément dû à la raison pour laquelle nous avons mentionné à la fin du tout premier paragraphe de ce post: Ce que nous, les humains, voyons, prend la priorité. Diffbot est un robot d'apprentissage visuel, et en tant que tel, son AI déduit les balises du contenu rendu réel - ce qu'il peut voir - plutôt que de regarder le code source qui est beaucoup trop facilement épicé à des fins de référencement.
Y a-t-il un moyen d'obtenir les balises du code source, cependant, si l'on en a vraiment besoin? De plus, pouvons-nous faire en sorte que Diffbot reconnaisse l'auteur sur les articles de point de site? Oui. Avec l'API personnalisée.
L'API personnalisée est une fonctionnalité qui vous permet non seulement de modifier l'API Diffbot existant à votre guise en ajoutant de nouveaux champs et règles d'extraction de contenu, mais vous permet également de créer des API complètement nouvelles (consultées via une URL dédiée également) pour le traitement de contenu personnalisé.
Accédez au tableau de bord Dev et connectez-vous avec votre jeton. Ensuite, entrez dans «API personnalisée». Activez l'onglet "Créer une règle" en bas et saisissez l'URL de l'article que nous rampons dans la zone d'URL, puis cliquez sur Tester. Votre écran doit ressembler à ceci:
Vous remarquerez immédiatement que le champ de l'auteur est vide. Vous pouvez modifier la règle de recherche d'auteur en cliquant sur l'édition à côté et en trouvant l'élément d'auteur dans la fenêtre d'aperçu en direct qui s'ouvre, puis cliquez dessus pour obtenir le résultat souhaité. Cependant, en raison de certains, enfin, des CSS moins que parfaits à la fin de SitePoint, il est très difficile de fournir à l'API de Diffbot avec un chemin cohérent vers le nom de l'auteur, en particulier en cliquant sur les éléments. Au lieu de cela, ajoutez manuellement la règle suivante: .Contrutor - Large .Contributeur_name A et cliquez sur Enregistrer.
Vous remarquerez que la fenêtre d'aperçu remplit désormais correctement le champ de l'auteur:
En fait, cette nouvelle règle est automatiquement appliquée à tous les liens de point de point pour votre jeton. Si vous essayez de prévisualiser un autre article de SitePoint, comme celui-ci, vous remarquerez que Peter Nijssen est extrait avec succès:
ok, modifions davantage l'API. Nous avons besoin de l'article: Valeurs de balises visibles dans le code source. Cela nécessite un processus en deux étapes.
Une collection est exactement à quoi cela ressemble - une collection de valeurs saisies via un ensemble de règles spécifique. Nous appellerons notre collection «Metatags» et lui donnerons le sélecteur suivant: Meta [Property = Article: Tag]. Cela signifie «Trouvez tous les éléments de méta dans le HTML qui ont l'attribut de propriété avec l'article de valeur: Tag“.
Les champs de collecte sont des entrées individuelles dans une collection - dans notre cas, les différentes balises. Cliquez sur «Ajouter un champ personnalisé à cette collection» et ajoutez les valeurs suivantes:
Cliquez sur Enregistrer. Vous aurez immédiatement accès à la liste des balises dans la fenêtre de résultat:
Modifiez la sortie finale de l'action diffbotdemo () à ceci:
<span>Route<span>::</span>get('/diffbot', 'HomeController@diffbotDemo');</span>
Si vous actualisez maintenant l'URL avec laquelle nous avons testé (http://homesttead.app:8000/diffbot), vous remarquerez que les valeurs des balises auteur et méta sont là. Voici la sortie que la ligne de code ci-dessus produit:
Nous avons nos balises!
diffbot est un puissant extracteur de données pour le Web - que vous ayez besoin de consolider de nombreux sites en un seul index de recherche sans combiner leurs back-end, vous souhaitez créer un agrégateur de nouvelles, avoir une idée pour un composant Web d'aperçu URL, ou Souhèrent régulièrement récolter le contenu des listes de tarifs publics des concurrents, Diffbot peut aider. Avec des appels API simples morts et des réponses hautement structurées, vous serez opérationnel à peu près en aucun cas. Dans un article ultérieur, nous créerons une toute nouvelle API pour utiliser Diffbot avec PHP et refaire les appels ci-dessus. Nous hébergerons également la bibliothèque sur Packagist, afin que vous puissiez facilement l'installer avec Composer. Restez à l'écoute!
Diffbot est un outil de grattage Web qui utilise la technologie d'apprentissage automatique pour extraire et analyser les données à partir des pages Web. Il est conçu pour comprendre les pages Web de la même manière qu'un humain, ce qui en fait un outil puissant pour l'extraction des données. Diffbot peut être utilisé pour recueillir des données à partir de sites de médias sociaux, d'articles de presse, de pages de produits, etc. Il est particulièrement utile pour les entreprises qui ont besoin de collecter de grandes quantités de données rapidement et avec précision.
Diffbot utilise une forme d'intelligence artificielle connue sous le nom d'apprentissage automatique pour comprendre et interpréter les pages Web. Il utilise des algorithmes pour analyser la structure et le contenu d'une page Web, puis extrait des données pertinentes en fonction de cette analyse. Cela permet à Diffbot de comprendre les pages Web d'une manière similaire à la façon dont un humain le ferait, ce qui en fait un outil puissant pour l'extraction de données.
diffbot peut extraire Un large éventail de types de données à partir des pages Web. Cela inclut le texte, les images, les vidéos et plus encore. Il peut également extraire des métadonnées, comme l'auteur d'une page Web ou la date à laquelle il a été publié. Cela fait de Diffbot un outil polyvalent pour l'extraction de données, capable de rassembler un large éventail d'informations à partir du Web.
Peut diffbot extraire les données des sites de médias sociaux?
diffbot est conçu pour être convivial, avec une interface simple et des instructions claires. Cependant, comme n'importe quel outil, il peut y avoir une courbe d'apprentissage pour les nouveaux utilisateurs. Fortunately, Diffbot offers a range of resources to help users get started, including tutorials and customer support.
Yes, Diffbot is designed to handle large amounts of données. Il s'agit d'un outil puissant pour les entreprises qui ont besoin de rassembler et d'analyser de grands volumes de données rapidement et avec précision. La technologie d'apprentissage automatique de Diffbot lui permet de traiter rapidement les données, ce qui en fait un outil précieux pour les projets de Big Data.
Un large éventail d'industries peut bénéficier de l'utilisation de l'utilisation Diffbot. Cela comprend le marketing, la recherche, le journalisme, le commerce électronique, etc. Toute industrie qui s'appuie sur la collecte et l'analyse des données du Web peut potentiellement bénéficier de l'utilisation de diffbot.
Diffbot ressort-il d'autres outils d'extraction de données grâce à à son utilisation de la technologie d'apprentissage automatique. Cela lui permet de comprendre et d'interpréter les pages Web d'une manière similaire à la façon dont un humain le ferait, ce qui en fait un outil puissant et précis pour l'extraction des données. Cependant, comme n'importe quel outil, son efficacité peut dépendre des besoins spécifiques de l'utilisateur.
Oui, Diffbot est un outil fiable pour l'extraction des données. Il est utilisé par un large éventail d'entreprises et d'industries pour recueillir et analyser les données du Web. Son utilisation de la technologie d'apprentissage automatique lui permet d'extraire avec précision les données pertinentes, ce qui en fait un outil de confiance pour l'extraction des données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!