Home > Software engineering >  How to scrap depending on a class name with BeautifulSoup
How to scrap depending on a class name with BeautifulSoup

Time:05-10

I'm using Python and BeautifulSoup for web scrapping, and I'd like to sort the results depending on a class name on my html page. There is my code:

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://www.ville-saintmandrier.fr/acces-rapide/associations-mandreennes/#results'

response = requests.get(url)

if response.ok:
    names = []
    genders = []

    soup = BeautifulSoup(response.text, 'html.parser')

    divs = soup.findAll(class_="annuaire-item")
    print(divs)
    for class_ in divs:
        print(class_.text)

My problem is that the only output I'm getting is: [] But why? I don't understand what's missing, because according to the documentation I have to use class_ to sort results depending on a class

CodePudding user response:

The url entirely depends on Javascript. So you can grab text value usin selenium with bs4.

import time
import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options


option = webdriver.ChromeOptions()
option.add_argument("start-maximized")

#chrome to stay open
option.add_experimental_option("detach", True)

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=option)
driver.get('https://www.ville-saintmandrier.fr/acces-rapide/associations-mandreennes/#results')
time.sleep(2)

soup = BeautifulSoup(driver.page_source,'lxml')

for card in soup.select('.annuaire-item'):
    txt= card.get_text(strip=True,separator='\n')
    print(txt)

Output:

A.C.M.V.G. – ASSOCIATION DES COMBATTANTS, MUTILES ET VICTIMES DE GUERRE DE SAINT-MANDRIER SUR 
MER
Adresse
Hôtel de Ville - 83430 SAINT MANDRIER SUR MER
Description
Maintien et développement des liens d’entraide et d’amitié au sein du monde combattant. uvre 
en faveur de la paix et du devoir de mémoire.
Téléphone
06.19.57.13.01
Adresse email
[email protected]
Nom du contact
M. Jean KUHLMANN
A.E.M.E.F. – Amicale des Anciens Elèves des Ecoles de Mécaniciens et Energie de la Flotte     
Adresse
11, Chemin des Lilas - 83430 SAINT MANDRIER SUR MER
Description
Maintien des liens d’amitié, de camaraderie et de solidarité qui unissent les anciens de l’Ecole des Mécaniciens de la Flotte de Saint-Mandrier-sur-Mer.
Téléphone
04.94.63.91.71
Adresse email
[email protected]
Nom du contact
M. Jean CONSTANT
A.M.M.A.C. – ASSOCIATION DE MARINS ET MARINS ANCIENS COMBATTANTS
Adresse
Hôtel de Ville - 83430 SAINT MANDRIER SUR MER
Description
Participation aux diverses activités municipales : course pédestre, triathlon, activités culturelles
 présence aux cérémonies patriotiques sur la commune et les villes voisines. Visites et
 voyages, journées récréatives.
Téléphone
06 31 38 14 49
Adresse email
[email protected]
Nom du contact
Responsable Georges AYMARD
A.N.F.E.M. – ASSOCIATION NATIONALE DES FEMMES DE MILITAIRES
Adresse
Les Lauriers - Pinède Saint Georges - Rue Jean Aicard - 83430 SAINT MANDRIER SUR MER
Description
Accueil, entraide, solidarité en offrant un lieu d’accueil et de rencontre pour les femmes de 
militaires.
Téléphone
06.83.19.32.62
Adresse email
[email protected]
Nom du contact
Déléguée : Mme Catherine LENORMAND
A.N.S.M. – ASSOCIATION NAUTIQUE SAINT MANDRIER SUR MER
Adresse
Hôtel de Ville - 83430 SAINT MANDRIER SUR MER
Description
Activités liées au nautisme, voile et motonautisme. Défense des plaisanciers, régates, pêche, 
sorties « découverte » en mer, croisières en flottille.
Téléphone
06.77.65.10.23
Adresse email
[email protected]
Nom du contact
M. Christophe ENAULT
A.P.E. – ASSOCIATION POUR LA PROTECTION DE L’ENVIRONNEMENT ET L’AMELIORATION DU CADRE DE VIE  
Adresse
BP n° 4 - 83430 SAINT MANDRIER SUR MER
Description
Protection de l’environnement et amélioration du cadre de vie. L’APE oeuvre pour la protection des sites, la reconnaissance et la mise en valeur des patrimoines naturels, historiques et paysagers.
Information et éducation des scolaires et du grand public aux enjeux environnementaux.        
Adresse email
[email protected]
Nom du contact
M. Dominique CALMET
A.P.M. – AMICALE DES PLAISANCIERS MANDREENS
Adresse
6, Allée des Sparganiers - 83500 La Seyne sur Mer
Description
Assurer la défense des plaisanciers mandréens, promouvoir les activités de la mer. Faire connaître le port et la ville de Saint-Mandrier-sur-Mer.
Téléphone
06.61.94.09.60 /04.94.87.27.58
Adresse email
[email protected]
Nom du contact
M. Robert HERNANDEZ
AESKA – Espace KAURI
Description
Séances individuelles de coaching, hupnose, conseils en fleur de Bach…
Sensibilisation à la raréfaction du poulpe et de la Grande Nacre.
Adresse
12B, boulevard Sainte Asile, le Pin Rolland - 83430 SAINT MANDRIER SUR MER
Téléphone
06 52 23 28 29
Adresse email
[email protected]
Site Internet
HTTP://www.espacekauri.com
Nom du contact
Juliette LETHY-ROLANDONE
AGORA
Adresse
20, Rue Pasteur - 83430 SAINT MANDRIER SUR MER
Description
Organisation d’ateliers, de couture. Yoga, wellness, Tao, sophrologie, Tricot, patchwork.     
Téléphone
07.82.64.96.77
Adresse email
[email protected]
Nom du contact
Mme Eva Maria CHAMORRO
ALSH « LEI MOUSSI »
Adresse
Hôtel de Ville - 83430 SAINT MANDRIER SUR MER
Description
Accueil de loisirs les mercredis et les vacances. Le centre de loisirs accueille les enfants de 3 à 5 ans et de 6 à 13 ans. L’équiped’animation propose de nombreuses activités tant sportives (escalade, rugby
) que récréatives et créatives (spectacles, ferme pédagogique
).
Téléphone
06.73.371.372
Adresse email
[email protected]
Nom du contact
Présidente : Sylvie KYPRAIOS - Directrice : Mme Tina COLOMBANI - 

webdriverManager

  • Related