jeudi 23 octobre 2014

Beautiful soup, c'est de la soupe

Beautiful soup, si vous pensez gastronomie vous pouvez essayer cette combinaison: CTRL+W, sinon continuez la lecture.

Beautiful soup est encore une autre librairie python! oh oui que du python!

En fait c'est une librairie qui fait du 'web scraping'  B-)

Vous comprenez pas anglais? ok d'aprés wikipedia:
Le web scraping (parfois appelé Harvesting) est une technique d'extraction du contenu de sites Web, via un script ou un programme, dans le but de le transformer pour permettre son utilisation dans un autre contexte, par exemple le référencement.

Beautiful Soup est l'une des librairies python les plus populaires dans ce domaine. Elle permet en effet de parcourir, de rechercher, de modifier le contenu d'un document html ou xml.

Treve de bavardage on va parcourir sommairement quelques unes de ces fonctionnalités!

On commence par recuperer le code html d'un chapitre de bleach sur mangareader.net












On importe le module urllib2 (voir article) qui nous permet de recuperer le contenu html de la page demandée.
Le contenu recuperé est passé en argument à la classe BeautifulSoup(BS) avec l'option 'html' pour lui preciser qu'on veut traiter du html. Le code html est converti en unicode et affecté à soupe.
























Ci-dessus on parcours notre document html en utilisant les tags de ce dernier et quelques fonctions supplementaires tel que find ou find_all qui permettent de trouver facilement un élément donné. On peut leur passer comme argument un identifiant ou un autre tag.

soupe.find(id='mangainfo') # retourne l'élément ayant comme id mangainfo
soupe.find_all('img') # retourne tous les tags img de la page

A noter qu'il y a aussi des fonctions comme find_next_sibling et find_previous_sibling qui me rappelle mes cours de xml :( ...


Bon on peut s'en arreter là pour aujourdh'hui. Ce petit post était une anticipation de notre prochain article qui va porter sur.... les mangas! Ben oui, on a un module qui nous permet d'extraire les URLs des pages de nos scans et un autre qui permet de les telecharger pourquoi pas combiner tous ça pour télécharger automatiquement nos mangas préferés et les avoir en local? Rendez-vous au  prochain article! A bientot!

Ah j'oubliais, n'hesitez pas de poser vos questions!



6 commentaires:

  1. Nice post, rédaction améliorée avec moins de fautes sur ce billet...
    J'ai une question cependant, c'est quoi la différence si je me rends sur une page et que je l'enregistre directement sur mon disque?

    RépondreSupprimer
  2. Merci beaucoup pour les remarques!

    Si tu enregistre une page tu peux toujours l'ouvrir comme suit

    from bs4 import BeautifulSoup as BS
    soupe = BS(open("index.html"))

    RépondreSupprimer
  3. Très intéressant comme article. Fun et concis. Hate de voir le prochain

    RépondreSupprimer
  4. Dommage d'utiliser urllib2, ce serait encore plus simple avec requests

    RépondreSupprimer
    Réponses
    1. Your're right! d'autant qu'il est restful et beaucoup facile a utilier!

      Supprimer

Contact

Nom

E-mail *

Message *