[Théorie] Utiliser des Apis Web pour concevoir plus rapidement des Application Web. ( + »Piquer » des données avec le Web Scrapping, hi hi hi)

Introductionbfs-module-icon-api-letter


Lorsque l’on débute un projet, notre base de données est vide, on a alors souvent besoin de données .

Pour obtenir ses futures données plus rapidement, on peut se connecter à l’aide d’une api à des bases de données WEB reconnues, afin d’alimenter notre application plus rapidement.

Un exemple: J’ai une application de vente et de gestion de poissons d’aquariums, je ne vais pas me taper à la main l’enregistrement de 1000 poissons et la prise de photo des 1000 poissons si les photos nommées existent déjà, triées , dans une base de données accessible sur WEB.
Un autre exemple : Si je veux créer un AutoComplete sur un Champs Input Html répertoriant des noms de villes, je ne vais pas, bien sur, coder à la main chaque nom de ville ! Je vais d’abord chercher si une API ne pourrait pas me fournir ces données automatiquement sans le moindre effort( De plus l’api pourra même me fournir énormément d’informations à propos de telle ou telle ville ).

Pour voir du web scrapping dans une de mes apps c’est ici : http://nicolash.org/truc53/#/dashboard/crud

Cependant attention, il pourrait arriver que certaines API soient supprimées ou discontinuées ou même mises à jour, en ce cas, si notre application reposant dessus ne fonctionne plus, on aura beaucoup de problèmes avec nos clients ! Il faut donc soit plutôt prévoir un système d’import des données ou soit prévoir une solution de secours dans notre application, dans l’idéal, l’intégration de l’api doit être transparente dans notre app, que l’api soit accessible ou pas.

Sommaire :


  1. Mais comment cela fonctionne-t-il sur le web ?
  2. Peux-tu nous faire un schéma ?
  3. A quoi ressemble la réponse du serveur distant ?
  4. Quelles  sont ces merveilleuses apis, alors  ?
  5. Mais …Il n’y a pas d’API et pourtant je voudrais acquérir les données d’un autre site web super bien dans mon application ! Le Web Scrapping.
  6. Et on peut scrapper avec Jquery ou Angular directement ?
  7. Des entreprises sont elles spécialisées dans le Web scrapping ?
  8. Les outils de Web scrapping

1. Mais comment cela fonctionne-t-il sur le web ?


On envoie une requête JSONP à l’api distante avec un argument de recherche, en retour , l’api distante nous transmets un résultat généralement au format tableau d’objets JSON, mais cela peut aussi être en XML.

2. Peux-tu nous faire un schéma ?


syst+¿me angular api-page-001

3. A quoi ressemble la réponse du serveur distant ?


C’est standardisé, comme d’hab, le  tableau d’objets Json ressemble souvent à ça (admettons qu’on l’appelle acteurs.json):


[

{"acteur":"DeNiro":"photo":"dn.jpg"},

{"acteur":"Pitt":"photo":"pitt.jpg"}

]

Avec angularJs, j’accède donc à la photo de Brad Pitt en tapant : $scope.acteurs[1].photo

4. Quelles  sont ces merveilleuses apis, alors  ?


Avec AngularJs, on accède aux api suivantes :

Rechercher des images :

Sur flicker : http://codepen.io/CSharpMark/pen/ZYXYXd

Sur instragram : http://angularscript.com/angularjs-based-instragram-photo-search/

Sur google : Il faut s’inscrire pour obtenir un id avant de pouvoir utiliser l’API :

Bien sur, on peut ensuite récupérer ces données dans notre propres site( Ce sera plutôt des url.).

Rechercher des données génériques sur un thême.

Sur Wikipedia :

  • Sur Freebase (Attention il parait que ça va fermer)

http://embed.plnkr.co/oOANCuzwCOlDlxEefSDr/

Rechercher des données ciblées (Adresses, restaurants , etc…)

  • Sur google (avec ngAutoComplete):

http://plnkr.co/edit/il2J8qOI2Dr7Ik1KHRm8?p=preview

Rechercher des films :

Rechercher des données gouvernementales :

  • Sur Data.gouv.fr

https://www.data.gouv.fr/fr/topics/economie-et-emploi/

5. Mais …Il n’y a pas d’API et pourtant je voudrais acquérir les données d’un autre site web super bien dans mon application !


Il existe des moyens, avec Javascript, de « piquer » les ressources d’un site externe puis de le rapatrier dans une variable ou un objet JSON .

En effet, à partir du moment ou le navigateur affiche quelque Chose, il est en théorie possible de le récupérer avec Javascript.

On fait cela en parcourant le DOM de n’importe quelle page WEB, puis, à partir du moment ou l’on a repéré entre quelles balises se trouvent les informations qui nous intéressent, on a  une chance de rapatrier l’information automatiquement dans notre application.

Cette technique s’appelle « WEB SCRAPPING  » en Anglais.

nogokiri

Nogokiri est une API capable de réaliser ce genre de choses… Parser une page HTML ou un fichier XML puis, rapporter le résultat d’une recherche dans une variable Javascript.

Pour parser, Nogokiri se sert de XPath et des balises Css3.

Donc pour parler cruement, il s’agit bien de piquer des données afin de gagner du temps, il faut donc bien savoir utiliser la librairie pour cela !

D’autres tutos d’exemple :

  • https://www.codementor.io/nodejs/tutorial/extract-link-information-using-nodejs-angularjs
  • https://scotch.io/tutorials/scraping-the-web-with-node-js

Un petit exemple en Anglais d’utilisation de Nogokiri :

I just found a great way to find a node in HTML using nokogiri. We need to get data from a table, inside a web page, that does not have any HTML/CSS identification (class, id, etc). So the first option was to « count » the rows and columns in the table to get to the data, not practical, I know, but it was the first attempt.

Then I found this:

url = "put your http address here"
doc = Nokogiri::HTML(open(url))
tr =  doc.search "[text()*='some-text-that-identify-the-data-you-are-looking']"

The first two lines I think are self explanatory. The third line does the magic of search inside all the document a text that « uniquely » identify the data we are looking for, or at least a nearby cell that allow us to access the cell that contains the data we are looking for.

6. Et on peut scrapper avec Jquery ou Angular directement ?

Voici déjà un exemple de scrapping en Jquery trouvé sur le net, basé sur les css, on voit que c’est assez sympa, le .each() parcourant toutes les occurances de la balise css  .client-data li de la page scannée(scrappée), il récupère tous les noms et les emails des personnes  dans un tableau d’objets json !:

  $('.client-data li').each(function(){
      clients.push({
          nom: $(this).find('.name').text(),
          email: $(this).find('.email').text()
      });

Voici un autre example simple avec angularJs :

http://stackoverflow.com/questions/33861444/is-it-possible-to-web-scrape-with-angularjs

Pour une méthode plus complète avec Jquery et Jsdom :

http://liamkaufman.com/blog/2012/03/08/scraping-web-pages-with-jquery-nodejs-and-jsdom/

Une autre méthode avec Xray, il parse Google.com:

https://egghead.io/lessons/node-js-intro-to-web-scraping-with-node-and-x-ray

La lib Xray est ici :

https://github.com/lapwinglabs/x-ray

7. Des entreprises sont elles spécialisées dans le Web scrapping ?

Oui, pas mal de sociétés utilisent le Web scrapping pour créer des statistiques variées.

Voici un exemple au hasard, en Anglais, mais il en existe pleins de françaises :

http://www.proscraper.com

Voici toutes les applications de scrapping qu’ils ont développé :

JOB EN LIGNE CONCENTRATION

Développé 3 (trois) offre d’emploi des sites par raclage emplois provenant d’autres sites. Un échantillon: http://joblance.info est un site d’emploi qui regroupe des listes d’emploi en ligne à partir d’autres sources d’emploi populaires comme oDesk, GAF (Freelancer.com), Get A Coder, ScriptLance, etc.

LIRE LA SUITE  »

SCRIPTS PRIX DE COMPARAISON

Nous avons développé des services / scripts qui peuvent gratter informations sur les produits ainsi que des données sur les prix de buy.com, amazon.com, dell.com, produits Google, etc., et enregistre dans la base de données à des fins de comparaison. Toute solution personnalisée peut être donnée conformément aux exigences.

LIRE LA SUITE  »

ANNUAIRE GRATTAGE

Nous avons gratté de nombreux répertoires d’entreprises et sites de chambres pour informations de contact telles que le nom, l’adresse e-mail, numéro de téléphone, adresse, etc. Mon raclage se connecte (si nécessaire) un site avec des informations de connexion donné et la récolte des données. les données grattées sont enregistrées dans la base de données et / ou en sortie comme CSV, XML ou PDF.

PLUS D’INFORMATIONS

ALEXA TOP UN MILLION SITES CHENILLES

Nous avons mis au point un robot qui fonctionne sur un Alexa (1) million de sites Web pour apporter leurs détails comme les catégories, la démographie, les mots clés, contact propriétaire (nom, email et téléphone), ainsi que les détails généraux comme rang mondial, national rang, etc. . Nous pouvons également vous donner des données mensuelles mises à jour pour ces millions de meilleurs sites Web.

LIRE LA SUITE  »

GRABBER MAILBOX POUR YAHOO, GMAIL, HOTMAIL et POP / IMAP

Nous avons des expériences dans le développement d’un client de messagerie complet qui regroupe yahoo, gmail, e-mails pop / imap ainsi que les pièces jointes, etc. Ce complexe de bâtiments de travail requis raclage des scripts qui peuvent envoyer un courriel boîtes avec un comportement correct des cookies de session. Plus tard, nous avons construit une application facebook de ce client de messagerie.

LIRE LA SUITE  »

RSS MODULE PARSER.DJL POUR DRUPAL & WORDPRESS

Élaboration d’un RSS Parser complexe et module agrégateur pour Drupal qui peut gratter les aliments donnés et créer des nœuds avec versioning appropriée. Il ne se confond pas seulement les flux RSS, mais aussi peut Hanle éléments en double en fonction de la configuration dans le backend. Le module est entièrement gérable à partir du backend. Plus tard, nous avons développé un plugin similaire pour WordPress.

LIRE LA SUITE  »

Immobilier & CONTACT GRATTOIRS

Développé certains 35+ raclage des scripts pour gratter et déployer les annonces immobilières et agents détails. Mes racleurs raclent les données et les images régulièrement et de garder la destination / site de stockage mis à jour. Mon expérience comprend racler les données de http://www.homepath.com/, http://www.beachfrontrealty.net/ et http://www.houseandco.co.uk et de nombreux sites de propriété.

LIRE LA SUITE  »

TWITTER SCRAPER & AGGREGATOR

Nous avons développé une application facebook pour regrouper plusieurs comptes Twitter des informations dans une page fan facebook. Cela a nécessité raclage comptes twitter puis en enregistrant tous les tweets dans la base de données mysql. Vous pouvez jeter un oeil: cliquez ici

LIRE LA SUITE  »

AUTRES GRATTOIRS

Nous avons développé de nombreux autres grattoirs comme racleur de médias qui racle les fichiers multimédias de 1000s à partir d’un site donné, lien racloir qui racle tous les liens d’un site donné, les cigares racloir qui racle d’info cigare de certains 20+ sites de cigares, les voitures grattoir cette info écorchures de voiture concessionnaires automobiles sites et beaucoup plus. S’il vous plaît contacter pour tous les services de raclage personnalisé.

LIRE LA SUITE  »

8. Les outils de Web scrapping :

Les voir sur ce bon post : http://codecondo.com/web-scraping-tools-extracting-data/

Et, pour les devs PHP :
http://codecondo.com/php-libraries-for-working-with-http-and-scraping-websites/

Publicités