Extraire données page web [Résolu]

Signaler
Messages postés
5
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
8 mars 2021
-
Messages postés
5
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
8 mars 2021
-
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

Messages postés
16154
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juin 2021
869
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()?
Messages postés
5
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
8 mars 2021

Autant pour moi, il manque au moins la moitié du message. Par contre, je ne vois pas comment le modifier?
Messages postés
16154
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juin 2021
869
as-tu consulté la documentation pour déterminer comment écrire le second paramètre de la méthode find()?
Messages postés
5
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
8 mars 2021

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