Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web scraping par Vincent Digiusto

Web scraping par Vincent Digiusto

Sur le web on ne croise pas que des internautes, il y a une armée de robots, plus ou moins bien intentionnés. Les robots les plus connus sont les robots d'indexation (googlebot) qu'on appelle des spiders car ce sont des robots qui suivent les liens entre sites comme des araignées. D'autres robots vont un peu plus loin et collectent des données sur le web pour analyse, statistiques, recopie etc ... Le web scraping est justement le fait d'automatiser l'extraction de données en ligne, à les analyser, et les exploiter. Par exemple pour faire des statistiques sur un site de petites annonces, pour générer des news (news.google.fr) etc ... L'intervention propose donc de faire un point sur cette technologie.

Présentation donnée à la Cantine pour /dev/var/10 le 9 juin 2015.

/dev/var/

June 17, 2015
Tweet

More Decks by /dev/var/

Other Decks in Programming

Transcript

  1. Définition • WEB SCRAPING : Collecter des données sur internet

    pour les exploiter • CRAWLING, SPIDERING : Parcourir le web pour indexation DEV/VAR/10 09/06/2015
  2. A quoi çà sert • Comparateurs de prix – Qui

    est le moins cher.com – Analyse des prix des concurrents • Agrégation de données – News.google.xx • Divers – Alertes personnalisées – Contenu multimédia / jaquettes de films – Recherche d'emplois – Prospection / marketing – Recherche, statistiques … DEV/VAR/10 09/06/2015
  3. Mais aussi • gensdici.fr • population-ville.info • french-phone.com • 1180033.com/famille.php

    • francy-annu.com • french-corporate.com • export-in-france.com • www.yasni.com • www.annuaire4.com • …...... Et autres annuaires inversés, annuaires portables, …. DEV/VAR/10 09/06/2015
  4. Web Scraping : Théorie Récupérer la page Extraire les données

    utiles Reconnaissance, mise en forme Enregistrer URL à récupérer DEV/VAR/10 09/06/2015 Déterminer L'URL suivante
  5. Outils • Outil de base : Firefox + firebug •

    Outils de dev – Ligne de commande : Wget, cURL, regex … – Phantomjs – Python : requests, lxml, beautifulsoup, scrapy • Outils «clés en main» – Online : import.io, scraperwiki, kimono, yahoo pipes – Local : httrack, … • Automatisation du navigateur – Selenium, imacros, watir(ruby)… DEV/VAR/10 09/06/2015
  6. kimono import.io scraperwiki httrack yahoo pipes imacros watir lxml scrapy

    phantomjs beautifullsoup python requests outils python selenium 0 10000 20000 30000 40000 50000 60000 70000 DEV/VAR/10 09/06/2015
  7. Outils • Outil de base : Firefox + firebug •

    Outils de dev – Ligne de commande : Wget, cURL, regex … – Phantomjs – Python : requests, lxml, beautifulsoup, scrapy • Outils «clés en main» – Online : import.io, scraperwiki, kimono, yahoo pipes – Local : httrack, … • Automatisation du navigateur – Selenium, imacros, watir(ruby)… DEV/VAR/10 09/06/2015
  8. PYTHON Requests Récupérer la page Extraire les données Transformer, adapter,

    enrichir Fusionner, réutiliser Déterminer l'URL à récupérer DEV/VAR/10 09/06/2015 PYTHON
  9. PYTHON Level 1 : requests et expressions régulières Grandes fonctions

    de REQUESTS : Headers, GET/POST, Proxies, Cookies, réponses en JSON, authentifications ... DEV/VAR/10 09/06/2015
  10. PYTHON LXML ou Beautifulsoup PYTHON Requests Récupérer la page Extraire

    les données Transformer, adapter, enrichir Fusionner, réutiliser Déterminer l'URL à récupérer DEV/VAR/10 09/06/2015 PYTHON
  11. PYTHON Level 2 : requests et LXML Grandes fonctions de

    LXML.HTML: Parser XML/HTML, validation, xslt/xpath, formulaires DEV/VAR/10 09/06/2015
  12. SCRAPY (PYTHON 2.7) Récupérer la page Extraire les données Transformer,

    adapter, enrichir Fusionner, réutiliser Déterminer l'URL à récupérer DEV/VAR/10 09/06/2015 PYTHON
  13. Outils • Outil de base : Firefox + firebug •

    Outils de dev – Ligne de commande : Wget, cURL, regex … – Phantomjs – Python : requests, lxml, beautifulsoup, scrapy • Outils «clés en main» – Online : import.io, scraperwiki, kimono, yahoo pipes – Local : httrack, … • Automatisation du navigateur – Selenium, imacros, watir(ruby)… DEV/VAR/10 09/06/2015
  14. Et quand çà suffit pas • Botnet, cloud ... DEV/VAR/10

    09/06/2015 sites bdd Bot master Bot 1 Bot 2 Bot 3 Bot 98 Bot 99 Bot 100 ….
  15. Se protéger du SCRAPING • Vérifier le « user agent

    » • Utiliser des Cookies • Javascript • Capcha • Login/pass • Text → images • Changer la structure des données • Analyse comportementale • Obfuscation DEV/VAR/10 09/06/2015
  16. • Qu'est-ce que les gens vendent le plus ? Des

    voitures, des livres ? DEV/VAR/10 09/06/2015
  17. 0 500000 1000000 1500000 2000000 2500000 3000000 3500000 vetements ameublement

    livres jeux_jouets decoration equipement_auto ventes_immobilieres chambres_d_hotes covoiturage hebergements_insolites DEV/VAR/10 09/06/2015
  18. Réglementation • Code de la propriété intellectuelle • Publication de

    Données personnelles (loi informatique et libertés) • CGU non applicables en général faute de contrat Jurisprudence • Ryanair vs opodo • LesNumeriques vs alatest.fr DEV/VAR/10 09/06/2015
  19. Article L341-1 Créé par Loi n°98-536 du 1 juillet 1998

    - art. 5 JORF 2 juillet 1998 en vigueur le 1er janvier 1998 Le producteur d'une base de données, entendu comme la personne qui prend l'initiative et le risque des investissements correspondants, bénéficie d'une protection du contenu de la base lorsque la constitution, la vérification ou la présentation de celui-ci atteste d'un investissement financier, matériel ou humain substantiel. Cette protection est indépendante et s'exerce sans préjudice de celles résultant du droit d'auteur ou d'un autre droit sur la base de données ou un de ses éléments constitutifs. DEV/VAR/10 09/06/2015
  20. Article L342-3 Modifié par Loi n°2006-961 du 1 août 2006

    - art. 3 (V) JORF 3 août 2006 Lorsqu'une base de données est mise à la disposition du public par le titulaire des droits, celui-ci ne peut interdire : 1° L'extraction ou la réutilisation d'une partie non substantielle, appréciée de façon qualitative ou quantitative, du contenu de la base, par la personne qui y a licitement accès ; 2° L'extraction à des fins privées d'une partie qualitativement ou quantitativement substantielle du contenu d'une base de données non électronique sous réserve du respect des droits d'auteur ou des droits voisins sur les oeuvres ou éléments incorporés dans la base ; 3° L'extraction et la réutilisation d'une base de données dans les conditions définies aux deux premiers alinéas du 7° de l'article L. 122-5 ; 4° L'extraction et la réutilisation d'une partie substantielle, appréciée de façon qualitative ou quantitative, du contenu de la base, sous réserve des bases de données conçues à des fins pédagogiques et des bases de données réalisées pour une édition numérique de l'écrit, à des fins exclusives d'illustration dans le cadre de l'enseignement et de la recherche, à l'exclusion de toute activité ludique ou récréative, dès lors que le public auquel cette extraction et cette réutilisation sont destinées est composé majoritairement d'élèves, d'étudiants, d'enseignants ou de chercheurs directement concernés, que la source est indiquée, que l'utilisation de cette extraction et cette réutilisation ne donne lieu à aucune exploitation commerciale et qu'elle est compensée par une rémunération négociée sur une base forfaitaire. Toute clause contraire au 1° ci-dessus est nulle. Les exceptions énumérées par le présent article ne peuvent porter atteinte à l'exploitation normale de la base de données ni causer un préjudice injustifié aux intérêts légitimes du producteur de la base. DEV/VAR/10 09/06/2015
  21. Réglementation • Code de la propriété intellectuelle • Publication de

    Données personnelles (loi informatique et libertés) • CGU non applicables en général faute de contrat Jurisprudence • Ryanair vs opodo • LesNumeriques vs alatest.fr DEV/VAR/10 09/06/2015