Comment télécharger et parser une page HTML en Python

Cette page expliqe comment télécharger et parser une page HTML en Python à partir de son URL afin de récupérer les méta données, le titre, la description et les liens. Vous pouvez tester cet exemple en ligne sur replit.

Les codes Python de cette page utilise les bibliothèquesBeautifulSoup et request.

from bs4 import BeautifulSoup
import requests

Récupérer le HTML à partir de l'URL

La première étape consiste à télécharger le code HTML à partir d'une URL :

url = 'https://url-example.com/'
r = requests.get(url, allow_redirects=True)
print (r.text)

Parser le code avec BeautifulSoup

Pour parser le HTML, il faut dans un premier temps convertir le code en objet BeautifulSoup, qui représenter le document sous la forme d'une structure de données adéquate.

soup = BeautifulSoup(r.text, features="html5lib")

Obtenir le titre depuis l'en-tête.

Pour obtenir le titre de la page (dans els méta données, celui qui apparait dans l'onglet du navigateur) il convient de rechercher la balise title :

# Get header page title
title = soup.find('title')
print (title.string)

Obtenir le titre de la page (balise h1)

Pour obtenir le titre de la page (celui qui apparait dans la page), il faut alors rechercher la balise h1:

title = soup.find('h1')
print (title.string)

Obtenir la description de la page

Pour obtenir la description de la page depuis les méta-données, il faut rechercher la méta-balise description:

description = soup.find("meta", attrs={'name':'description'})
print (description["content"])

Pour obtenir la description au format open graph, remplacer la propriété name:description par og:description:

description = soup.find("meta", property="og:description")
if (description is not None):
  print (description)

Obtenir les liens

Pour récupérer tous les liens, il faut chercher toutes les balises a et pour chaque, il faudra récupérer la propriété href :

for link in soup.findAll('a'):
  print (link.get('href'))

Voir aussi


Dernière mise à jour : 23/05/2022