{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Parseurs\n", "\n", "Dans ce notebook nous utiliserons le parseur [lxml](http://lxml.de/) qui est un binding de libxml2 et [Beautiful Soup](https://www.crummy.com/software/BeautifulSoup/) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parser de l'html\n", "\n", "Beautiful Soup nous permet de parser simplement du contenu html. Même si le contenu est mal formé, le module bs reconstitue un arbre et offre des fonctions faciles à utiliser pour parcourir l'arbre ou y rechercher des éléments. \n", "Beautiful Soup n'est pas un parseur, il utilise les parseurs et offre une API simplifiée à ses utilisateurs." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nous travaillerons directement avec du contenu en ligne à l'aide du module `requests`. Si vous ne l'avez pas en magasin, installez le. \n", "Décembre c'est le mois des listes, nous nous attacherons à la liste des 100 meilleures chansons de l'année de NPR la radio publique américaine : https://www.npr.org/2020/12/03/931771524/the-100-best-songs-of-2020-page-1 \n", "Allez y faire un tour." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "import requests\n", "from bs4 import BeautifulSoup\n", "\n", "url = \"https://www.npr.org/2020/12/03/931771524/the-100-best-songs-of-2020-page-1\"\n", "r = requests.get(url)\n", "soup = BeautifulSoup(r.text, 'lxml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Voilà nous avons maintenant un objet `soup` de classe Beautiful Soup. \n", "La [doc](https://www.crummy.com/software/BeautifulSoup/bs4/doc/) est très claire." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "
\n",
"je reponse a ton aimableux lettres
\n",
"que nous a fait plaisir en naprenas
\n",
"que tu et enbonne santes car il
\n",
"anais de maime pour nous
\n",
"