Hallo alle zusammen.
ich habe versucht einen einfachen Währungsrechner zu programmieren komme aber gerade nicht weiter ich hoffe jemand von euch kann mir weiterhelfen.
Wenn ich es versuche auf irgendeine art und weise zu printen, wird mir der Fehler angezeigt das man ein Int und ein Tag nicht multiplizieren kann. Ich hab auch schon nachgeguckt ob man den Tag casten kann aber nichts nützliches gefunden. Desweiteren gibt mir mein Programm schon den aktuellen Währungskurs aus den er aus dem HTML Code entnimmt aber kann es leider nicht weiter verwenden.
--> Eingetippte Geldmenge * aktueller Wechselkurs (Für mehrere Wechselkurse gleichzeitig)
Code:
import urllib.request
import requests
from bs4 import BeautifulSoup
url = "https://www.onvista.de/devisen/"
r = requests.get(url)
html_content = r.text
soup = BeautifulSoup(html_content, "html.parser")
for tr in soup.find_all('tr'):
tds = soup.find_all('td')
currency = []
print("Euro/USD: %s \nEuro/Schweitzer Franken: %s\nEuro/Türkische Lira: %s\n" %\
(tds[3].text, tds[24].text, tds[116].text))
money = int(input("Geben Sie Ihre Geldmenge in Euro ein: "))
print(money*(tds[116]))
kleine anmerkung:"Es hilft mir nicht nur zu sagen du musst es anders Parsen oder des gleichen".
Danke schonmal im vorraus.
Python HTML
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Python1961: Whoa Du bist innerhalb dieses Tages um 6 Jahre gealtert? Als Du die Frage heute Mittag schon mal gestellt hast, warst Du noch Python1967: viewtopic.php?f=1&t=48965
Was genau hilft Dir an den Antworten dort nicht? Hast Du denn schon mal das Python-Tutorial in der Python-Dokumentation durchgearbeitet? Und damit wir das mal üben: Zeig doch bitte mal den konkreten Fehler den Du bekommst. Nicht irgendwie umschrieben, sondern 1:1 den Traceback in den Beitrag kopieren. Also das was Sirius3 in dem anderen (gleichen) Thema schon nachgefragt hatte.
Die Meldung sagt ja, das etwas nicht multipliziert werden kann. Was multiplizierst Du denn da? Schau Dir das doch mal an. Also lass Dir das mal Ausgeben. Also Zeichenkette, als `repr()`-Darstellung, und auch mal den mit `type()` ermittelten Typ der beiden Operanden.
Und auch wenn Du das aus irgendwelchen Gründen anscheinend nicht hören willst: Da einfach *alle* <td>-Elemente der *gesamten* Seite raus zu suchen und per magischen Indexwerten drei aus allen raus zu greifen und zu hoffen dass das die richtigen sind, wird nicht lange gut gehen. Das sollte Dir eigentlich klar sein wenn Du HTML verstehst und wie solche Seiten dynamisch erstellt werden. Sollte Dir das nicht klar sein, müsstest Du Dich dringend auch mit HTML auseinandersetzen und wie das vom Browser und von BeautifulSoup in einen Objektbaum umgewandelt wird und wie man auf dem sicher(er) Inhalte annavigieren kann.
Was genau hilft Dir an den Antworten dort nicht? Hast Du denn schon mal das Python-Tutorial in der Python-Dokumentation durchgearbeitet? Und damit wir das mal üben: Zeig doch bitte mal den konkreten Fehler den Du bekommst. Nicht irgendwie umschrieben, sondern 1:1 den Traceback in den Beitrag kopieren. Also das was Sirius3 in dem anderen (gleichen) Thema schon nachgefragt hatte.
Die Meldung sagt ja, das etwas nicht multipliziert werden kann. Was multiplizierst Du denn da? Schau Dir das doch mal an. Also lass Dir das mal Ausgeben. Also Zeichenkette, als `repr()`-Darstellung, und auch mal den mit `type()` ermittelten Typ der beiden Operanden.
Und auch wenn Du das aus irgendwelchen Gründen anscheinend nicht hören willst: Da einfach *alle* <td>-Elemente der *gesamten* Seite raus zu suchen und per magischen Indexwerten drei aus allen raus zu greifen und zu hoffen dass das die richtigen sind, wird nicht lange gut gehen. Das sollte Dir eigentlich klar sein wenn Du HTML verstehst und wie solche Seiten dynamisch erstellt werden. Sollte Dir das nicht klar sein, müsstest Du Dich dringend auch mit HTML auseinandersetzen und wie das vom Browser und von BeautifulSoup in einen Objektbaum umgewandelt wird und wie man auf dem sicher(er) Inhalte annavigieren kann.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
-
- User
- Beiträge: 2
- Registriert: Freitag 19. Juni 2020, 21:22
Ich musste mir leider einen zweiten account erstellen weil ich in den ersten auf einmal nicht mehr reinkomme obwohl Passwort und Benutzername stimmt.
Der Fehler der mir angezeigt wird lautet:
TypeError: unsupported operand type(s) for *: 'Tag' and 'int'
Der Fehler der mir angezeigt wird lautet:
TypeError: unsupported operand type(s) for *: 'Tag' and 'int'
Gar nicht so einfach, diese Seite ohne sinnvolle Annotation zu parsen:
Code: Alles auswählen
import requests
from bs4 import BeautifulSoup
URL = "https://www.onvista.de/devisen/"
def read_table(url):
response = requests.get(url)
document = BeautifulSoup(response.text, "html.parser")
table = document.select_one('div.EUR.CONTENT_NAVI_INHALT table')
header = list(cell.text for cell in table.select("thead tr th"))
return [
dict(zip(header, row.stripped_strings))
for row in table.select("tbody tr")
]
def main():
table = read_table(URL)
currencies = {
row["Wert"]: row["akt. Kurs"]
for row in table
}
print("Euro/USD: %s \nEuro/Schweitzer Franken: %s\nEuro/Türkische Lira: %s" %
(currencies["Eurokurs (Euro / Dollar)"], currencies["Euro - Schweizer Franken"], currencies["Euro - Türkische Lira"]))
if __name__ == '__main__':
main()