Extraire données page web

Résolu
ElCatala52 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
ElCatala52 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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   Statut Membre Dernière intervention  
 
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