Extraire données page web

Résolu/Fermé
ElCatala52
Messages postés
5
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
8 mars 2021
- Modifié le 28 févr. 2021 à 21:37
ElCatala52
Messages postés
5
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
8 mars 2021
- 8 mars 2021 à 20:01
Bonsoir,
Je patine depuis un moment pour extraire des données d' une page web.Afin de clarifier le problème, je joins la partie de la page que je cherche à extraire:
<header class="l-quotepage__header">
            <div class="c-faceplate is-positive /*debug*/"
             data-faceplat#!/usr/bin/env python3
             data-faceplate-symbol="1rPAF" 
             data-ist="1rPAF" data-ist-init="{"symbol":"1rPAF","high":5.728,"low":5.29,"previousClose":5.51

Dans cet exemple, comment faire pour obtenir la valeur de high soit 5.728
Voici le début du code qui ne me ramène rien!!!

from bs4 import BeautifulSoup
import urllib.request
 
url =  'https://www.boursorama.com/cours/1rPALO/'
 
req = urllib.request.Request(url)
rslt = urllib.request.urlopen(req)
soup = BeautifulSoup(rslt, 'html.parser')
print(soup.find('div','c-faceplate '))

Merci de votre aide

EDIT : Correction des balises de code


YP

3 réponses

yg_be
Messages postés
20031
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 août 2022
1 185
28 févr. 2021 à 20:54
bonjour, tu patines aussi dans l'utilisation des balises de code: relis ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

as-tu consulté la documentation pour déterminer comment écrire le second paramètre de la méthode find()?
0
ElCatala52
Messages postés
5
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
8 mars 2021

28 févr. 2021 à 21:33
Autant pour moi, il manque au moins la moitié du message. Par contre, je ne vois pas comment le modifier?
0
yg_be
Messages postés
20031
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 août 2022
1 185
28 févr. 2021 à 21:38
as-tu consulté la documentation pour déterminer comment écrire le second paramètre de la méthode find()?
0
ElCatala52
Messages postés
5
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
8 mars 2021

8 mars 2021 à 20:01
Bonsoir,
En fait c' est simple. data-is-init est à considérer comme une liste. Il suffit donc de rapatrier cette liste dans une variable puis de décortiquer le contenu de cette variable. Si cela peut aider, je joins une partie du code du script python.
    rqt = urllib.request.Request(url)
rslt = urllib.request.urlopen(rqt)
soup = BeautifulSoup(rslt, 'html.parser')
# Création de la liste cotation
listecote=soup.find("div","c-faceplate")
cotation = listecote["data-ist-init"]
#Extraire la cote la plus haute
departhaut= cotation.index(',')
departvaleurhaut = cotation.index(':', departhaut)
finhaut = cotation.index(',' , departvaleurhaut)
haut = cotation[(departvaleurhaut + 1):finhaut]

Ce code est sans prétention et est certainement perfectible.

Cordialement
0