PARTAGE prévisions nombres d'heures de soleil sur 7 jours Script Python3

Bonjour,

Merci de modifier votre message en utilisant le code </> pour encadrer vos codes ou logs.
tutoriel cliquez ici
Ou vous pouvez envoyer un message privé à @sheldon-bot démarrer tutoriel avancé pour apprendre à utiliser les menus :wink:

bonne journée

Voilà c fait

Bonjour, super boulot, j’aimerai adapter le code pour l’utiliser sur un autre site mais j’aimerai le comprendre pour voir ce qu’il faut que j’adapte, tu peux m’expliquer stp?
merci

Bonsoir,

Je ne peut pas faire un cour complet ici car ce serait trop long

un petit coup de google beautifulsoup4

et tu trouvera pleins d’exemples

un parmi d’autre beautifulsoup4

et la documentation

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

Bonne soirée

Chez moi le script plantait depuis hier, il faut remplacer tab_sun par tab-sun :

#! /usr/bin/env python3
import requests
import re
from sys import argv
from bs4 import BeautifulSoup
res = requests.get(argv[2])
soupe=BeautifulSoup(res.content, "html.parser")
print(int(re.findall(r'\d+',soupe.find_all(class_ = "tab-sun")[int(argv[1])].text[0:200].strip())[0]), end = '')
2 « J'aime »

Merci de l’info je viens de corriger aussi chez moi
c’est aussi toutes les autres class avec des _ qui sont maintenant avec un -
:+1:

corrigé aussi le 1er post

1 « J'aime »

Bien vu!
Ils ont modifier tous les underscore par des tirets… et y’en a un paquet dans les noms de classe de leur table!
Et il ont également modifier l’affichage de la date pour chaque jours…!

Salut @olive

j’ai pas retrouvé le post sur celui ci :
image

Mais j’ai aussi une erreur du style :

Erreur pour [Extérieur][Soleil][test] : Erreur sur /var/www/html/plugins/script/data/Soleil01 https://www.meteoblue.com/fr/meteo/semaine/saint-genis-laval_france_2979985 2>&1 
valeur retournée : 1. Détails : Jours: Traceback (most recent call last): File "/var/www/html/plugins/script/data/Soleil01", line 13, in print(""+soupe.find_all(class_ = 'tab_day_short')[i].text.split()[0] +"", end = '') IndexError: list index out of range

Est-ce le même de cause ?

Oui c’est la même
tiens la version corrigé du script (je sais plus non plus dans quel sujet c’était)

#! /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: 40px;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 = '')

2 « J'aime »

Superbe et merci

probablement, mais pas sur, il faut regarder si il y a toujours une class tab day short.

par exemple, pour la date de chaque jour je suis passé de :
subData['datetime']=soupe.find_all(class_ = "tab_day_long")[i].time["datetime"]

à

subData['datetime']=soupe.find_all(class_ = "date")[i]["datetime"]

parce qu’il n’affichent plus la date dans ce bloc pour les 2 premiers jours…

edit

image

il y a bien tab-day-short, ou tu récupère dans le « text » le nom du jour en cours

edit2 : y’a eu un trou temporel???

Merci de l’explication du pourquoi du comment mais pas sur que j’intègre le truc si il y a un changement de nouveau dans 6 mois 1 an