Bben
Avril 14, 2021, 2:02
163
Salut,
A priori ils ont rajouté un ‹ h › derrière le digit, donc ça foire le cast en integer… [Edit] je dirais plutôt que la quantité d’espace à changé, donc la selection de texte foire pour n’avoir que le nombre [/edit]
dans mon script j’ai ajouter
import re
et remplacer
subData['soleil']=int(soupe.find_all(class_ = "tab_sun")[i].text[62:64].strip())
par
subData['soleil']=int(re.findall(r'\d+',soupe.find_all(class_ = "tab_sun")[i].text[0:200].strip())[0])
…à adapter of course.
Note : d’autre champs sont arrivé hors focus dans les sous selection de texte (.text[x,y]) !
Bonjour,
Si vous avez suivi exactement la doc d’Olive (je suis pas très expert en python ), le nouveau script est…
#! /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 = '')
Dans mon cas, ça remarche.
Merci,
Laurent.
1 « J'aime »
olive
Avril 14, 2021, 3:21
166
Bravo @LaurentP il faut juste apprendre a te servir de la balise </> pour mettre du code dans community
tutoriel cliquez ici
Ou envoyer un message privé à @sheldon-bot démarrer tutoriel avancé
pour apprendre à utiliser les menus
un badge a gagner pour la 2ième option
ps: j’ai éditer le 1er post avec ce code pour ceux qui ne sont pas adepte de lecture …
2 « J'aime »
effectivement ca remarche pour moi aussi , merci beaucoup
pj66
Avril 14, 2021, 5:30
168
hello,
voila des mois et des mois que je me bats avec ces scripts et rien ne fonctionnait .
Aujourd’hui ; j’ai lu la dernière phrase …
Au cas ou la librairie ne soit pas présente dans votre environnement python3.
passez en console ssh
sudo pip3 install beautifulsoup4
De suite ça fonctionne beaucoup mieux
1 « J'aime »
C’est top
Je n’y arrive pas faire un truc aussi propre
Greg
Mai 19, 2021, 1:38
170
Voilà j’ai une erreur le script ne ce mets plus à jour
Voici le message
[2021-05-19 03:00:33][ERROR] : Erreur pour [meteo][Durée soleil sainte maure ][j+6] : Erreur sur /var/www/html/core/php/…/…/plugins/script/data/soupe 6 https://www.meteoblue.com/fr/meteo/semaine/sainte-maure-de-touraine_france_2980403 1 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File « /var/www/html/core/php/…/…/plugins/script/data/soupe », line 7, in print(int(soupe.find_all(class_ = « tab_sun »)[int(argv[1])].text[62:64])) ValueError: invalid literal for int() with base 10: ’ ’
olive
Mai 19, 2021, 5:59
171
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
bonne journée
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
olive
Mai 27, 2021, 5:26
174
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 »
olive
Décembre 3, 2021, 3:36
176
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 -
corrigé aussi le 1er post
1 « J'aime »
Bben
Décembre 3, 2021, 3:37
177
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 :
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 ?
olive
Décembre 4, 2021, 11:31
179
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 »
Bben
Décembre 4, 2021, 12:50
181
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
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