BS4 – installation

Mes installations se font avec le gestionnaire de paquets Python pip.

pip permet d’installer les paquets disponibles sur le Python Package Index

Pour installer pip sur Mac, la commande est la suivante :

sudo easy_install pip

Ensuite, parce que je suis sur Mac et je ne veux pas mélanger les environnements de travail, j’ai créé un environnement virtuel

Pour installer virtualenvwrapper :

sudo -H pip install virtualenvwrapper

Ensuite, après avoir créé le dossier bs4 et activé l’environnement virtuel, l’installation se fait classiquement avec pip

virtualenv bs4
cd bs4
source bin/activate
pip install beautifulsoup4
pip install lxml

Puisque lxml est installé dans le même environnement que beautifulsoup, BS4 l(utilisera en priorité

In other words, just installing lxml in the same python environment makes it a default parser.

Un premier test pour vérifier que ça marche (afficher tous les liens de la première page du site marchand www.scandles.fr ) – c’est un des sites qui « alimente » via les scripts Python le moteur de recherche www.les-bougies.com

from bs4 import BeautifulSoup
soup = BeautifulSoup (open("www.scandles.fr"))
links = soup.find_all('a')
for link in links:
    print link

BS4 – Introduction

La plupart des tests présentés ici sont inspirés du livre : Web Scraping with Python en vente chez O’Reilly et aussi disponible au formats Pdf et Epub à cette adresse.

Je travaille sur Mac avec OS El Capitan et mon Python est en version 2.7 (ce qui explique que le code de mes tests est un peu différent de celui présenté par l’auteur du livre)

Mon site de test est mon moteur de recherche www.les-bougies.com et quand je veux accéder à un site marchand, je choisis généralement www.scandles.fr 

Evidemment, libre à vous d’utiliser d’autres URL/sites pour tester vos scripts.

from urllib import urlopen

html = urlopen(« http://www.les-bougies.com »)

print(html.read())

urllib est intégré de base à Python. Habituellement j’utilise Requests qui intègre urllib dans la version Python 3 – mais pour rester le plus fidèle aux scripts donnés en exemple dans le livre, je resterai avec urllib  dans mes premiers exemples.

Si vous exécutez le script ci-dessus, vous afficherez le code html de la première pas de www.les-bougies.com

Le prochain post expliquera comment installer BS4

BeautifulSoup

BeautifulSoup est un package python, qui utilise un parser (un analyseur syntaxique) – écrit en Python pour parcourir un arbre d’éléments X(HTML) afin d’effectuer des recherches ou des modifications au sein de cet arbre.

BeautifulSoup (BS4) est le parser X(Html) que j’ai retenu. J’ai longuement hésité à utiliser Scrapy (à qui je consacrerai aussi un post) mais BS4 à l’avantage de la simplicité et de la compatibilité avec Python 3 (ce qui n’était pas le cas de Scrapy lorsque j’ai commencé le projet même si pour l’instant je travaille avec Python 2.7…)

Parce que je travaille sur Mac avec l’OS X El Capitan, l’installation de BS4 n’a pu se faire de façon simple (j’y reviendrai). Il m’a fallu utiliser virtualenvwrapper.

Une fois, tous les problèmes d’installation résolus et un apprentissage rapide avec ce tutoriel et un test à partir avec le fichier exemple 43rd-congress BS4 se révèle être très simple d’utilisation et répondre parfaitement à mes attentes.

Je commente ci-dessous un test qui permet d’extraire les liens du site www.scandles.fr 

import requests
from bs4 import BeautifulSoup

u = "http://www.scandles.fr"
html = requests.get(u)
data = html.content
bsObj = BeautifulSoup(data)
links=bsObj.findAll("a")

requests est une bibliothèque HTTP

Requests is an elegant and simple HTTP library for Python, built for human beings.

bs4 est la bibliothèque BeautifulSoup

Après avoir fait un get pour obtenir la page et extrait le content, il ne reste plus qu’à le passer à BS4 pour en faire un objet qu’on pourra parser avec la librairie.

Si vous testez cet exemple, avec votre propre URL (remplacez u par ce que vous voulez) alors vous verrez que links contient tous les liens de votre page.

Le moteur www.les-bougies.com utilise BS4 pour parser tous les sites de bougies parfumées (voir article précédent)

Pour une introduction au Scraping du Web avec Python, je vous recommande ce livre chez O’Reilly : Web Scraping with Python