Séance 2 : formats de données§

&

Département Informatique, IUT Lyon 1

Creative Commons License

Ce travail est sous licence Creative Commons Attribution-ShareAlike 3.0 France.

1

Introduction§

2

Motivation§

Lors de la séance précédente, vous avez utilisé des expressions régulières pour analyser le contenu des pages.

3

Type de contenu§

4

Présentation§

Il existe une taxonomie standard des formats de données, appelés types de contenu (media types).

Ces types de contenu ont une structure à deux niveaux ; exemples :

5

Type de contenu d’un message HTTP§

Tout message HTTP qui comporte un contenu doit spécifier son format, à l’aide de l’en-tête Content-Type.

Content-Type: text/html; charset=utf-8
6

Négociation de contenu§

Dans la requête, le client peut indiquer au serveur les types de contenu qu’il est capable de traiter, à l’aide du champs Accept.

Accept: text/html,application/xhtml+xml,
        application/xml;q=0.9,*/*;q=0.8
7

Le verbe HEAD§

Lorsqu’on est intéressé uniquement par les en-têtes, et pas par le contenu, on peut utiliser le verbe HEAD au lieu du verbe GET.

8

Formats usuels§

9

HTML : text/html§

Format documentaire, surtout destiné à l’affichage.

Sauf pour les serveurs qui ne fournissent que ce format, on lui préférera des formats plus adaptés au traitement automatique.

10

HTML en Java§

Bibliothèque Jsoup (installation maven).

11

XML : application/xml§

Peut être vu comme une extension de HTML, autorisant n’importe quelle balise :

<commande no="12345">
  <client no="678-789"/>
  <articles>
    <article code="ab12">
      <quantité>2</quantité>
      <prix>10.10</prix>
    </article>
    <article code="cd34">
      <quantité>7</quantité>
      <prix>42.00</prix>
    </article>
  </articles>
</commande>
12

XML en Java§

Disponible en standard : javax.xml.parsers.

DocumentBuilder db =
    DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(inputStream, urlString);
13

JSON§

Sous-ensemble de Javascript, limité à la description de données :

{
  "no_commande": "12345",
  "no_client": "678-789",
  "articles": [
    {
      "code": "ab12",
      "quantite": 2,
      "prix": 10.10
    },
    {
      "code": "cd34",
      "quantite": 7,
      "prix": 42.10
    }
  ]
}

Pour en savoir plus

14

JSON en Java§

Bibliothèque GSON (installation maven).

15

Votre travail§

16

Votre travail§

Améliorez le programme de la séance précédente :

  1. en remplaçant les expression régulières par un véritable parser HTML (par exemple JSoup) ;
  2. en vérifiant si l’URL passée au programme retourne bien du HTML, et en ne comptant les liens que dans ce cas ;
  3. en utilisant le verbe HEAD (au lieu de GET) pour vérifier la validité des liens ;
  4. en affichant le nombre de liens valides par grande catégorie de contenu (text, image, audio…).
17