ValueError: invalid littéral pour int() avec la base 10: '196.41'
Je ne comprends pas pourquoi il travaille avec différents scénarios, mais pas avec celui-ci.
Fondamentalement, un monsieur m'a aidé ICI avec l'amélioration de mon code à gratter de la météo, ce qui fonctionne parfaitement. J'ai ensuite essayé de faire la même chose à gratter de l'EPF de valeur qui est dans une balise span <span class="text-large2" data-currency-value="">$196.01</span>
. Donc, j'ai suivi la même technique dans le code, remplacé les champs, et a été l'espoir pour que cela fonctionne.
Le code est ici:
import requests
from BeautifulSoup import BeautifulSoup
import time
url = 'https://coinmarketcap.com/currencies/litecoin/'
def ltc():
while (True):
response = requests.get(url)
soup = BeautifulSoup(response.content)
price_now = int(soup.find("div", {"class": "col-xs-6 col-sm-8 col-md-4 text-left"}).find(
"span", {"class": "text-large2"}).getText())
print(u"LTC price is: {}{}".format(price_now))
# if less than 150
if 150 > price_now:
print('Price is Low')
# if more than 200
elif 200 < price_now:
print('Price is high')
if __name__ == "__main__":
ltc()
La sortie ressemble à ceci:
Traceback (most recent call last):
File "test2.py", line 24, in <module>
ltc()
File "test2.py", line 13, in ltc
"span", {"class": "text-large2"}).getText())
ValueError: invalid literal for int() with base 10: '196.01'
Puis, j'ai finalement essayé de cette façon; mais à partir de là je obtenir de faux positifs, mais pas d'erreur. Il imprime ce qu'il veut
import requests
from bs4 import BeautifulSoup
import time
url = 'https://coinmarketcap.com/currencies/litecoin/'
def liteCoin():
while (True):
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
value = soup.find('span', {'class': 'text-large2'})
print(''.join(value.stripped_strings))
if 150 > value: # if less than 150
print('Price is Low!')
elif 200 < value: # if more than 200
print('Price is High')
else:
print('N/A')
time.sleep(5)
if __name__ == "__main__":
liteCoin()
Serait le problème que la valeur de l'EPF a un $
signe à l'intérieur de la span tag
? Et, de cette façon, le programme ne sait pas quoi faire avec de la ficelle?
- Vous devriez avoir un regard sur les bases de python par exemple ici. Le titre de votre question, fondamentalement, vous indique quel est le problème. Croyez-moi, elle sera payante à investir un peu de temps à la lecture dans les bases.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, nous allons simplifier votre exemple de programme:
On ne peut pas convertir la chaîne
'196.01'
à un nombre entier.Essayez ceci:
En passant du simple retour à la plus complexe, nous pouvons le faire:
ValueError: invalid literal for int() with base 10: '196.01'
.Vous avez besoin de comprendre les types de Python que vous êtes l'obtention d'un flotteur pas un int et que vous avez besoin de jeter le flotteur à une chaîne de caractères à imprimer. Il y a donc deux changements nécessaires.
Sorties: