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

A voir également:

3 réponses

yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
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 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
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