Comment extraire l information de pages web



Documents pareils
Informatique : Création de site Web Master 2 ANI TP 1

Réseaux. 1 Généralités. E. Jeandel

Protocoles Applicatifs

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

L3 informatique TP n o 2 : Les applications réseau

INF8007 Langages de script

RFC 7230 : Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

Logiciels de référencement

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

Présentation du Framework BootstrapTwitter

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

HTML, CSS, JS et CGI. Elanore Elessar Dimar

(structure des entêtes)

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

WebSSO, synchronisation et contrôle des accès via LDAP

Développement des Systèmes d Information

Protection des protocoles

Serveurs de noms Protocoles HTTP et FTP

Développement Web. Les protocoles

«Cachez-moi cette page!»

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Séance d ED n 5 : HTML et JavaScript

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

1 Introduction Propos du document Introduction De HTTP 1.0 à HTTP

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Programmation Internet Cours 4

Panel des technologies Web

Types MIME (2) Typage des ressources Internet. Les URI. Syntaxe dans les URI. Possibilité de spécifier un paramètre du sous-type

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

4. SERVICES WEB REST 46

Architectures Web Services RESTful

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Initiation à html et à la création d'un site web

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Application Web et J2EE

INTRODUCTION AU CMS MODX

Technologie des Serveurs Internet. Langage Perl

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG

Le protocole HTTP. 10 minutes pour comprendre. HTTP/0.9 - Lacunes et limitations HTTP/1.0 HTTP/1.1

Introduction à HTTP. Chapitre HTTP 0.9

Mysql avec EasyPhp. 1 er mars 2006

En Perl, les choses sont un peu différentes. Le cgi Perl ne peut être qu'un programme qui génère des sorties.

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

SERVEUR HTTP Administration d apache

Document Object Model (DOM)

Le stockage local de données en HTML5

Internet. Web Sécurité Optimisation

Web Application Firewalls (WAF)

Formation HTML / CSS. ar dionoea

Les sites web avec NVU

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Media queries : gérer différentes zones de visualisation

Démonstration de la mise en cache via HTML 5 sur iphone

Programmation Web. Madalina Croitoru IUT Montpellier

API ONE-TIME PASSWORD

Informations sur l utilisation du webmail du CNRS. Webmail du CNRS. Manuel Utilisateur

Serveur d Applications Web : WebObjects

Techniques de Programmation pour Internet

Stockage du fichier dans une table mysql:

Documentation CAS à destination des éditeurs

STAGE IREM 0- Premiers pas en Python

Proxies,, Caches & CDNs

Aspects techniques : guide d interfaçage SSO

Modules Prestashop - ExportCatalogue / EXPORT IMPORT POUR MODIFICATIONS EN MASSE DANS PRESTASHOP VERSION Optim'Informatique

Flux de Soumission & Envoi de SMS. avec lʼapi DataWinners

Pack Fifty+ Normes Techniques 2013

Le Modèle de Sécurité dans JAVA

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Initiation à la programmation en Python

Les outils de création de sites web

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

Architecture Multi-Niveaux

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Applications orientées données

Sécuriser les applications web de l entreprise

Gestion d identités PSL Exploitation IdP Authentic

Google Tag Manager v2 v1 dispo sur GTM pour les nuls dispo sur

ENVOI EN NOMBRE DE Mails PERSONNALISES

Module : programmation site Web dynamique Naviguer entre les pages via site map

Université de Toulouse-Le Mirail janvier 2012 Département de Géographie-Aménagement-Environnement Laurent Jégou

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Dans l'épisode précédent

STID 2ème année : TP Web/PHP

CHAPITRE 11. Temps réel Remy Sharp

Bernard Lecomte. Débuter avec HTML

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

EXPOSE. La SuisseID, qu est ce que c est? Secrétariat d Etat à l Economie SECO Pierre Hemmer, Chef du développement egovernment

Hébergement de site web Damien Nouvel

Détail du stage. Programmation PHP. Contenu du stage. Plan du cours. Introduction à la programmation des sites web dynamiques.

Transcription:

Comment extraire l information de pages web Zhentao Li École Normale Supérieure 2 avril 2014 Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 1 / 11

Extraire l'information s = "Le Département d'informatique de l'ens (DI ENS) est à la fois"

Comment fonctionne un navigateur?* *jusqu'à un certain point

Comment fonctionne un navigateur? firefox: Bonjour! DI: Salut. Qu'est-c Send

Comment fonctionne un navigateur? firefox: GET / HTTP/1.0 DI: HTTP/1.1 200 OK Date: Tue, 01 Apr 2014 10:15:29 Send

HTTP/1.1 200 OK Date: Tue, 01 Apr 2014 10:15:29 GMT Server: Apache/2.2.14 (Ubuntu) Last-Modified: Mon, 06 Feb 2012 23:10:22 GMT Accept-Ranges: bytes Content-Length: 58722 Vary: Accept-Encoding Connection: close Content-Type: text/html Entête retour <!-- -*- coding: utf-8; -*- --> <!-- $Id: index.shtml,v 1.36 2004/09/04 15:19:34 local Exp $ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN <html lang="en"> <head> Document <meta http-equiv="content-type" content="text/html; charset=u <link rel=stylesheet href="astree.css" type="text/css"> <title>the Astrée Static Analyzer</title> <meta name="keyword" content="validation, verification, stati debugging, testing, abstract interpretation, abstract, interp safety-critical, real-time, embedded, static program analysis

Le document Écrire en blanc «Département d'info» Puis, en dessous, écrire en plus petit «ENS». Ensuite, dessiner l'image de

Interprétation du document Dessiner un poire.

Méthodes de traitement de page web Traiter le document comme une chaîne de caractères. Utiliser un module spécialisé pour des chaîne de caractères avec ce format (Cours d aujourd hui). Ce module transforme le document (encodé en HTML) en dictionnaires, listes et chaînes de caractères emboîtés. Il ajoute aussi quelques fonctions utiles. Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 2 / 11

Le module BeautifulSoup Site http://www.crummy.com/software/beautifulsoup/ Peut aussi être utilisé sans installation en commençant python au bon endroit (dans le premier niveau du répertoire extrait). Autre modules aux fonctions similaires: mechanize lxml (BeautifulSoup 4 peut utiliser lxml) html5lib sgmllib (ancien) Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 3 / 11

Chargement du document >>> from bs4 import BeautifulSoup >>> soup = BeautifulSoup(html_doc) La variable de base est une variable de type BeautifulSoup. >>> soup.title <title> WebHome - Département d'informatique de l'ens</title> >>> soup.title.name 'title' Pour obtenir le document HTML. >>> import urllib >>> html_doc = urllib.urlopen("http://www.di.ens.fr").read() Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 4 / 11

Fonctions globales simples Extrait toutes les parties texte. >>> print soup.get_text() WebHome - Département d'informatique de l'ens @import url('pub/twiki/twikitemplates/base.css'); @import url("pub/twiki/patternskin/layout.css"); [...] Le Département d'informatique de l'ens (DI ENS) est à la fois un département d'enseignement et un laboratoire de recherche affilié au CNRS et à l'inria (Unité Mixte de Recherche 8548). Du point de vue de l'enseignement, le DI forme ses élèves (admis au concours de l'ens comme sur titre) au sein du prédoctorat de l'ens et du MPRI. [...] Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 5 / 11

Fonctions globales simples Afficher le contenu avec indentation >>> print soup.prettify() [...] <ul> <li> <a class="twikicurrenttopiclink twikicurrentwebhomelink twikili <span class="di-internal-lang-fr"> Accueil </span> </a> </li> [...] Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 6 / 11

Recherche Le HTML est un langage de parenthèse. Python utilise (), [], {}, HTML en utilise beaucoup plus de types de parenthèses appellés tags. <span> ouvre une parenthèse span. </span> ferme une parenthèse span. De plus, une paire de parenthèses peut avoir un dictionnaire associé à son ouverture. Trouver tous les tags de type a >>> soup.find_all('a') [<a id="pagetop" name="pagetop"></a>, <a href="http://www.ens.fr/" target= "_top">ens</a>, <a href="http://www.cnrs.fr/" target="_top">cnrs</a>, <a href="http://www.inria.fr/" target="_top">inria</a>, [...] Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 7 / 11

Recherche Trouver tous les liens (tous les parentheses de type a qui ont une cle href ) >>> liens = [] >>> for tag in soup.find_all('a'): >>> if tag.has_attr("href"): >>> liens.append(tag["href"]) >>> liens ['http://www.ens.fr/', 'http://www.cnrs.fr/', 'http://www.inria.fr/', 'http [...] Trouve le premier tag où la clé id prends valeur PageTop >>> soup.find(id="pagetop") <a id="pagetop" name="pagetop"></a> Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 8 / 11

Exploration des structures emboîtés Sauter au bon endroit: recherche par type de tag et paires (clé,valeur) du dictionnaire associé. >>> noeud = soup.find_all('body')[0] Se déplacer dans la structure emboîtée. >>> # Se déplacer a la premiere parenthese a l'interieur de la parenthese a >>> premier_fils = list(noeud.children)[0] >>> # Se déplacer a la premiere parenthese contenant la parenthese actuelle >>> parent = noeud.parent Dans tous les cas, il faut trouver un modèle pour l information recherchée. À partir de ce modèle, on peut ensuite écrire le programme requis. Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 9 / 11

Utiliser l interface du site lui-même Pour des sites modernes, il existe souvent des pages spécialement conçues pour la navigation par machine. Exemple: http://fr.wikipedia.org/w/api.php?format=json&action=query& titles=python&prop=revisions&rvprop=content Normalement sous le nom du API (Application programming interface ou interface de programmation) web. La page retourné resemble à des objets emboîtés, mais ici nous avons en plus l interprétation du créateur de la page. En fait, la plupart du temps, c est encodé en JSON (JavaScript Object Notation). Pour transformer une chaîne de caractère en JSON en des dictionnaires python: import json dict_python = json.loads(doc) Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 10 / 11

Le mot '''python''' peut désigner : * [[Python (mythologie) Python]], un animal monstrueux de Delphes dans la my * ''[[Python (genre) Python]]'', genre de serpent qui doit son nom au précéd Zhentao Li (École Normale Supérieure) Comment extraire l information de pages web 2 avril 2014 11 / 11 Exemple d extraction de données à partir de l API web import urllib import json adresse_base = "http://fr.wikipedia.org/w/api.php" parametres = {"format":"json", "action":"query", "titles":"python", "prop":"revisions", "rvprop":"content"} adresse_url = adresse_base + "?" + urllib.urlencode(parametres) doc = urllib.urlopen(adresse_url).read() dict_python = json.loads(doc) # Examiner dans l'interpreteur pour trouver les elements recherches # Par exemple le contenu de la page se trouve ici print dict_python['query']['pages']['2302']['revisions'][0]['*'] Sortie: {{Homonymie}} {{Homophone Piton}} {{Autres projets wiktionary = Python}}