Aller au contenu

Python SEO

Cheatsheet pour l’utilisation de BeautifulSoup en Python

Voici une cheatsheet pour l’utilisation de BeautifulSoup en Python pour l’extraction et la manipulation des données HTML :

Installation de BeautifulSoup

pip install beautifulsoup4
pip install lxml # Parser recommandé

Importer BeautifulSoup

from bs4 import BeautifulSoup
import requests

Charger et parser une page HTML

# À partir d'une chaîne de caractères HTML
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup = BeautifulSoup(html_doc, 'lxml')

# À partir d'une URL
url = 'http://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'lxml')

Naviguer dans l’arbre DOM

# Trouver une balise par son nom
print(soup.title)
print(soup.title.name)
print(soup.title.string)

# Trouver une balise par son attribut
print(soup.find('a', {'class': 'sister'}))

# Trouver toutes les balises correspondantes
links = soup.find_all('a')
for link in links:
print(link.get('href'))

# Accéder au contenu des balises
print(soup.p)
print(soup.p['class'])
print(soup.p.text)

# Utiliser des sélecteurs CSS
print(soup.select('p.story'))
print(soup.select_one('p.story'))

Modifier le contenu du HTML

# Changer le texte d'une balise
soup.title.string = "New Title"

# Ajouter une nouvelle balise
new_tag = soup.new_tag('p')
new_tag.string = "This is a new paragraph."
soup.body.append(new_tag)

# Retirer une balise
soup.find('p', {'class': 'title'}).decompose()

Exemples spécifiques

Extraire tous les liens d’une page

url = 'http://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'lxml')

links = []
for link in soup.find_all('a'):
href = link.get('href')
if href:
links.append(href)
print(links)

Extraire des données d’une table HTML

html_doc = """
<table>
<tr><th>Header 1</th><th>Header 2</th></tr>
<tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr>
<tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr>
</table>
"""
soup = BeautifulSoup(html_doc, 'lxml')

table = soup.find('table')
headers = [header.text for header in table.find_all('th')]
rows = []
for row in table.find_all('tr')[1:]:
cells = row.find_all('td')
cells_text = [cell.text for cell in cells]
rows.append(cells_text)

print(headers)
print(rows)

Extraire des données d’un formulaire

html_doc = """
<form action="/submit" method="post">
<input type="text" name="username" value="user123">
<input type="password" name="password" value="secret">
<input type="submit" value="Login">
</form>
"""
soup = BeautifulSoup(html_doc, 'lxml')

form = soup.find('form')
inputs = form.find_all('input')
form_data = {input.get('name'): input.get('value') for input in inputs if input.get('name')}
print(form_data)

Conclusion

Avec cette cheatsheet, vous avez un guide complet pour effectuer des opérations courantes avec BeautifulSoup pour le web scraping et la manipulation de données HTML en Python.

Grégory Florin

Expert SEO et auteur sur learnSEO.

Laisser un commentaire

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