Bravo le plus difficile est pas de recuperer les données mais de les présentées dans de beau widgets
Cela fonctionne après la mise à jour de mon système c’est parfait
Du coup j’ai commencé à jouer un peu avec maintenant que j’ai tout comme il faut.
J’ai d’abord suivi pas à pas pour les heures de soleil : Top cela fonctionne super bien et j’ai pris peur car mes panneaux solaires ne vont pas me chauffer la piscine cette semaine
ensuite j’ai fait un soupe2 pour jouer avec le vent et cela remonte bien mais j’ai juste un problème sur l’orientation du vent en plus de l’affichage interne du widget compass qui sera le problème suivant pour que je puisse voir le texte comme il faut.
A partir de J+4 je n’ai plus les mêmes orientations !
Je ne dois pas faire comme il faut, ne connaissant pas trop le python.
Mon soupe 2 ressemble à ça :
#! /usr/bin/env python3
import requests
from sys import argv
from bs4 import BeautifulSoup
res = requests.get(argv[2])
soupe2=BeautifulSoup(res.content, "html.parser")
print(int(soupe2.find_all(class_ = "wind")[int(argv[1])].text[33:36]))
Alors attention le script tel qu’il est ne récupère qu’une info a la fois …
Pour le vent il faut ce méfier lorsqu’il y a des rafales c’est une tranche qui est indiquée
genre 50-70
ce qui peut fausser l’info.
pour ce qui est des direction elle ne sont pas en valeurs °
N NE NO E SE SO O .... etc
et n’apparaissent pas dans la partie text mais dans la classe …
c’est donc la qu’il faudra chercher l’information (autre) et pas numérique
regarde l’exemple qu’a fait @Bben
subData['direction']=soupe.find_all(class_="wind")[i].span['class'][2].strip()
Tu a pratiquement déjà la, la solution
Salut @jerome6994
La tu récupère la vitesse du vent, et les 2 images sont cohérentes
Il faut chopper la direction dans la classe de la balise span dans la div de class wind.
A propos de .split() et .strip()
Ces 2 commandes peuvent vous faciliter la récupération de données.
Résumé et reprise du contexte sous python3
au prompt python copiez ces lignes avant de tester la suite
import requests
from bs4 import BeautifulSoup
res = requests.get("https://www.meteoblue.com/fr/meteo/semaine/paris_france_2988507")
soupe=BeautifulSoup(res.content, "html.parser")
Rappelez-vous pour récupérer la vitesse du vent dans la partie text
>>> soupe.find_all(class_="wind")[0].text
'\n\n 35 km/h
on ajoutait text[33:36] pour aller chercher la valeur a une position …
Voici 2 autres méthode :
split() nous renvoie une liste des éléments
>>> soupe.find_all(class_="wind")[0].text.split()
['35', 'km/h']
il nous suffit de récuperer soit le 1er élément
>>> soupe.find_all(class_="wind")[0].text.split()[0]
'35'
ou le 2ieme
>>> soupe.find_all(class_="wind")[0].text.split()[1]
'km/h'
Passons a strip() (c’est pratiquement l’inverse )
>>> soupe.find_all(class_="wind")[0].text.strip()
'35 km/h'
La on récupère les 2 infos en 1 seule
Attention toute fois au type de votre virtuel binaire/numérique/autre qui doit correspondre au type d’information que vous récuperez …
Voilà je vous laisse faire bon usage et améliorer vos script
Bien je suis sur mon téléphone mais j’ai le cerveau qui a bien chauffé quand même
Je comprends un peu quand on explique comme ça en introduisant les éléments et je vais tenter de faire un petit quelque chose quand même.
Merci de vos indications
Tout le tutoriel ici n’est qu’une invitation a apprendre Python
et le scramping est un bon appât
Oui lais il y a trop de choses bien à faire je vais faire l’over dose
Création d’objet avec mon fils
Apprentissage code pour widget
Apprentissage python
Etc…
C’est top mais il va falloir se calmer Jérôme sinon le cerveau va griller
Bonjour
Mise à jour ce jout du plingin script qui fait génére maintenant une erreur (qui n’existait pas)
Avez vous tous la même chose ?
Erreur sur /var/www/html/core/php/…/…/plugins/script/core/ressources/Soleil1 0 Météo Chennevières-sur-Marne - meteoblue 2>&1 valeur retournée : 127. Détails : sh: 1: /var/www/html/core/php/…/…/plugins/script/core/ressources/Soleil1: not found
Refait ton script il n’existe plus … merci jeedom (voir les sujet sur ce ploblème)
Merci
J’ai du supprimer toutes les lignes et les recréer
Je ne sais pas s’il y avait une méthode plus rapide
Mais pas de chance une autre mise à joru du plugin script qui arrive
Bon pour ceux qui on envie de récupérer toutes les infos de prévision a 7 jours
je vous propose 1 script de type info autre
et une seule commande script autre (ne pas coché historique)
ce script ne prend qu’un paramètre, l’adresse correspondante a votre ville ex :
nomduscript https://www.meteoblue.com/fr/meteo/semaine/nancy_france_2990999
voila le résultat:
Le code
#! /usr/bin/env python3
import requests
from sys import argv
from bs4 import BeautifulSoup
res = requests.get(argv[1])
soupe=BeautifulSoup(res.content, "html.parser")
print("<table>", end = '')
print("<tr>", end = '')
print("<td style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Jours: </td>", end = '')
for i in range(7):
print("<td style='width: 30px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_day_short')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')
print("<tr>", end = '')
print("<td style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Vent: </td>", end = '')
for i in range(7):
print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'wind')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')
print("<tr>", end = '')
print("<td style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Direction: </td>", end = '')
for i in range(7):
print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'wind')[i].span['class'][2] +"</td>", end = '')
print("</tr>", end = '')
print("<tr>", end = '')
print("<td style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Tmax: </td>", end = '')
for i in range(7):
print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_temp_max')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')
print("<tr>", end = '')
print("<td style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Tmin: </td>", end = '')
for i in range(7):
print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_temp_min')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')
print("<tr>", end = '')
print("<td style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Pluie: </td>", end = '')
for i in range(7):
print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_precip')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')
print("<tr>", end = '')
print("<td style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Soleil: </td>", end = '')
for i in range(7):
print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_sun')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')
print("</table>", end = '')
Salut Olive
J’ai testé ton script, mais j’ai toujours la même erreur
Pourtant j’ai utiliser putty pour installer la bibliothèque BeautifulSoup.
Elle a bien été téléchargée.
Merci de ton aide.
Boboss
dans ta console tu a bien taper :
sudo pip3 install beautifulsoup4
quel est la réponse a cette ligne de commande ?
puis toujours en console si tu tape
python3
tu devrais obtenir aprés la version de python le prompt suivant >>>
sur ce prompt si tu tape
from bs4 import BeautifulSoup
Y a t’il une erreur ou renvoi t’il le prompt python >>>
?
Fait moi une copie d’écran comme celle-ci :
Merci pour ta réponse
J’avais tapé
pip install beautifulsoup4
Ce qui est bizarre
Pourtant je suis bien connecté avec mon login et mdp.
Il ne veut pas installer quand je tape
sudo pip3 install beautifulsoup4
C’est strange. une histoire de droit ?
Merci
en root,je ne peux pas car lors de l’installation, il était conseillé de supprimer root de mémoire.
Il faudrait modifier le fichier sudoers
Boboss
Et tu n’a aucun utilisateur ayant des droits administrateur ?