jSoup: Un nouveau Scraper Java

Je viens de découvrir JSoup, une nouvelle librairie Java permettant d’extraire de l’information de pages web. Cette technique s’appelle « Scraper » (gratter en anglais).

Jusqu’à présent, j’utilisais WebHarvest qui permettait, à partir d’un descriptif XML, d’aller chercher de l’information sur une arborescence de page web décrite par un chemin XPath. WebHarvest est très pratique pour du crawling en masse mais devient vite complexe dès qu’il faut utiliser le langage de scripting pour aller chercher plusieurs infos précises.

A l’inverse, JSoup modélise la page web en java et propose toutes les méthodes pour parcourir le DOM comme on le ferait en JavaScript. Avec la possibilité de chercher une expression CSS !

Pour le moment, je ne l’ai testé que sur AlloCine.fr et tv.voila.fr, mais le scraping fonctionne très bien. Je n’ai pas encore testé les problématiques de cookie, authentification, soumission de formulaire …

Visiblement il semble être possible de modifier le DOM et donc de soumettre/cliquer les pages ? La communauté semble assez active.

2 pensées sur “jSoup: Un nouveau Scraper Java

  • 15 février 2014 à 16 h 38 min
    Permalink

    Bonjour,
    Bravo pour votre projet SARAH (prénom de ma fille) ! j’ai quelques connaissances en java et web. J’essaye de bien comprendre l’architecture de votre projet ! Vous utilisez pour SARAH PhantomJS pour scraper le web ? en théorie on doit pourvoir utiliser Jsoup par exemple ?
    Merci pour votre réponse, je cherche actuellement à comprendre les différentes techniques pour « parcourir » le web via des scripts et programmes.
    @+ David

    Répondre
    • 15 février 2014 à 16 h 43 min
      Permalink

      Il y a 2 mécanique de scraping dans SARAH:

      1. Cheerio qui sait faire le parsing de HTML (un peu comme JSoup) avec une syntaxe proche de jQuery
      2. PhantomJS qui est carrément un Webkit entièrement piloté ce qui permet d’accéder à des séries de page + JS + …

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *