Scrapper les données de plusieurs pages
Résolu
Bonjour, je souhaite scrapper une donnée qui est l'avis des consommateurs. Les avis sont présents sur plusieurs pages. Je ne sais pas vraiment comment m'y prendre pour scrapper la meme donnée sur plusieurs pages. Voici mon code, mais il ne fonctionne pas :
Le resultat est celui ci :
from urllib.request import urlopen from bs4 import BeautifulSoup import pandas as pd import requests headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'} titre_SC = [] def getQuestions(page): url = f'https://fr.trustpilot.com/review/www.backmarket.fr?page={page}' r = requests.get(url, headers=headers) soup = BeautifulSoup(url, 'html.parser') noms_SC = soup.findAll(name='p', attrs={'class': "typography_typography__QgicV typography_body__9UBeQ typography_color-black__5LYEn typography_weight-regular__TWEnf typography_fontstyle-normal__kHyN3"}) for element in noms_SC: titre_SC.append(element.text) return for x in range(1,150): getQuestions(x) df = pd.DataFrame(titre_SC) df.to_excel('titre.xlsx', index=False) print('Fin.')
Le resultat est celui ci :
/usr/local/lib/python3.7/dist-packages/bs4/__init__.py:336: UserWarning: "https://fr.trustpilot.com/review/www.backmarket.fr?page=1" looks like a URL. Beautiful Soup is not an HTTP client. You should probably use an HTTP client like requests to get the document behind the URL, and feed that document to Beautiful Soup.
' that document to Beautiful Soup.' % decoded_markup
A voir également:
- Scrapper les données de plusieurs pages
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Impossible de supprimer une page word - Guide
- Trier des données excel - Guide
- Comment numeroter les pages word - Guide
2 réponses
Bonjour,
Avant d'appeler BeautilfulSoup, il te faut télécharger le contenu de la (des) page(s) web concernée(s) et stocker le résultat dans une chaînes. Une manière de procéder est d'utiliser le module
Ensuite, il suffit de récupérer lancer une requête vers l'URL qui t'intéresse et récupérer le contenu HTML dans la réponse obtenue.
Il est possible si tu as vraiment beaucoup de pages et que celles-ci mettent du temps à être collectées de paralléliser le téléchargement avec un appel asynchone (voir cette page).
Une fois les pages récupérées tu peux commencer à utiliser
Bonne chance
Avant d'appeler BeautilfulSoup, il te faut télécharger le contenu de la (des) page(s) web concernée(s) et stocker le résultat dans une chaînes. Une manière de procéder est d'utiliser le module
requests(module qu'il faudra installer, sous Linux (Debian, Ubuntu) :
sudo apt install python3-requests; sous Windows :
pip install requests).
Ensuite, il suffit de récupérer lancer une requête vers l'URL qui t'intéresse et récupérer le contenu HTML dans la réponse obtenue.
import requests session = requests.Session() response = session.get("https://www.google.fr") text = response.text print(text)
Il est possible si tu as vraiment beaucoup de pages et que celles-ci mettent du temps à être collectées de paralléliser le téléchargement avec un appel asynchone (voir cette page).
Une fois les pages récupérées tu peux commencer à utiliser
BeautilfulSoup.
Bonne chance