Hi Zusammen,
ich brauche mal wieder eure Hilfe.
https://www.oddsportal.com/tennis/usa/a ... -AcCphyfM/
Ich möchte gerne die PopUp Blasen auslesen die erscheinen wenn man über einer dieser Quoten mit der Mouse fährt.
Ich würde da gerne alle Quotenbewegungen entnehmen. Kann mir da jemand helfen und mir ggfs. einen Code dafür zur Verfügung stellen. Die Daten bekomme ich in jedem Fall nicht aus dem html Code extrahiert.
Wenn einer eine Idee hat bitte gerne helfen.
DANKE euch allen
Dirk
Werte aus PopUp Blase auslesen
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
Hi ich habe nachfolgenden Code dazu im Netz gefunden:
Kann mir einer sagen wie ich den initialisiere? Also was muss ich oben alles importieren usw.
Also wenn ich nur das schreibe, passiert nichts:
Ich bekomme dann diesen Fehler:
Code: Alles auswählen
table = bookie_data.find('table', {'class': "table-main detail-odds sortable"}) # Find the Odds Table
# This part is scraping a Beautiful Soup Table. Returns the odds and the bookie name for the match
table_body = table.find('tbody')
rows = table_body.find_all('tr') # rows are different bookmakers
for row in rows: # for each bookmaker
cols = row.find_all('td')
for event_tag in cols:
# if it has onmouseover attribute
if event_tag.find("div", onmouseover=True) is not None:
# do stuff here
event_tag.find("div", onmouseover=True).get("onmouseover")
Also wenn ich nur das schreibe, passiert nichts:
Code: Alles auswählen
from bs4 import BeautifulSoup
Code: Alles auswählen
File "C:\Users\damat\AppData\Local\Temp/ipykernel_15948/3637032489.py", line 3
table_body = table.find('tbody')
^
IndentationError: unexpected indent
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@Assassin4711: Nach über 60 Posts hier im Forum ist dir noch nicht klar, dass Einrückung in Python wichtig ist und falsche Einrückungen Fehler erzeugen?
In specifications, Murphy's Law supersedes Ohm's.
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
Nach über 50 Posts hier im Forum ist mir noch mehr nicht klar als nur wie man richtig einrückt. Das sollte dir und euch doch bereits aufgefallen sein ... Ich kopiere Codestrecken aus dem Netz und versuche Sie dann zu verstehen. Die Codestrecke stand eben so im Netz ...pillmuncher hat geschrieben: ↑Dienstag 28. September 2021, 17:09 @Assassin4711: Nach über 60 Posts hier im Forum ist dir noch nicht klar, dass Einrückung in Python wichtig ist und falsche Einrückungen Fehler erzeugen?
Und ich bin weit davon entfernt, Leute die irgendwo Hilfe geleistet haben zu korrigieren. Ich nehme das alles erstmal so als richtig hin ...
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
aber nach hoffentlich richitgem einrücken bin ich schon etwas weiter gekommen:
Nun kommt dieser Fehler:
Mir wäre das ganz mit Selenium auch lieber, weil ich damit jetzt wenigstens schon erfolge erzielen konnte.
Code: Alles auswählen
from bs4 import BeautifulSoup
import requests
bookie_data = requests.get("https://www.oddsportal.com/tennis/usa/atp-san-diego/nishikori-kei-murray-andy-AcCphyfM/?r=1/")
table = bookie_data.find('table', {'class': "table-main detail-odds sortable"}) # Find the Odds Table
# This part is scraping a Beautiful Soup Table. Returns the odds and the bookie name for the match
table_body = table.find('tbody')
rows = table_body.find_all('tr') # rows are different bookmakers
for row in rows: # for each bookmaker
cols = row.find_all('td')
for event_tag in cols:
# if it has onmouseover attribute
if event_tag.find("div", onmouseover=True) is not None:
# do stuff here
event_tag.find("div", onmouseover=True).get("onmouseover")
Code: Alles auswählen
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_15948/459899985.py in <module>
7
8
----> 9 table = bookie_data.find('table', {'class': "table-main detail-odds sortable"}) # Find the Odds Table
10 # This part is scraping a Beautiful Soup Table. Returns the odds and the bookie name for the match
11 table_body = table.find('tbody')
AttributeError: 'Response' object has no attribute 'find'
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@Assassin4711: Statt Zeug aus dem Internet zu kopieren und dann durch Raten und stundenlanges Rumprobieren ohne wirklichen Lerneffekt irgendwas zusammen zu basteln das dann immer noch nicht funktioniert und bei dem du dir dann wieder und wieder hier Hilfe holen musst, könntest auch einfach mal das offizielle Tutorial durcharbeiten. Man kombiniert auch nicht einfach irgendwie Zahlen und Operatoren nach Gefühl um Mathematik zu lernen oder englische Worte um Englisch zu lernen.
In specifications, Murphy's Law supersedes Ohm's.
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
Was ist das offizielle tutorial?pillmuncher hat geschrieben: ↑Dienstag 28. September 2021, 18:51 @Assassin4711: Statt Zeug aus dem Internet zu kopieren und dann durch Raten und stundenlanges Rumprobieren ohne wirklichen Lerneffekt irgendwas zusammen zu basteln das dann immer noch nicht funktioniert und bei dem du dir dann wieder und wieder hier Hilfe holen musst, könntest auch einfach mal das offizielle Tutorial durcharbeiten. Man kombiniert auch nicht einfach irgendwie Zahlen und Operatoren nach Gefühl um Mathematik zu lernen oder englische Worte um Englisch zu lernen.
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@Assassin4711: Das findest du auf der Webseite mit der offiziellen Dokumentation für Python: https://docs.python.org/3/
In specifications, Murphy's Law supersedes Ohm's.
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
Zugegeben: Du hast mich jetzt ziemlich demotiviert.pillmuncher hat geschrieben: ↑Dienstag 28. September 2021, 19:28 @Assassin4711: Das findest du auf der Webseite mit der offiziellen Dokumentation für Python: https://docs.python.org/3/
Das Problem besteht ja nicht allein dass Python im Gegensatz zu VBA für mich wesentlich komplizierter ist, sondern das eben das meiste was man an Tutorials findet in englisch ist. Leider reicht da einfach mein dürftiges vor fast 30 Jahren in der Schule gelerntes Englisch nicht ...
Die Frage ist war es jetzt so störend für dich wenn ich hier Fragen gestellt habe? Ich finde ich habe auch schon in den letzten Wochen ein wenig gelernt. Aber es ist doch klar das es nicht nur Profis geben kann, ansonsten würden Foren doch keinen Sinn machen.
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@Assassin4711: Naja, du könntest auch einfach mal nach "python" "tutorial" "deutsch" googlen. Gleich das erste Ergebnis (nach den Videos) ist eine deutsche Übersetzung des englischen Tutorials.
Im Übrigen: Das Forum ist dazu da, Fragen zu stellen, zu beantworten und Hilfestellung zu geben. Es hat aber keinen Sinn, dir hier schriftlich vorzulesen, was sowieso schon im Tutorial steht. Ich antworte dir auch nicht, um dich zu demotivieren, sondern um dich in dir richtige Richtung zu schubsen.
Im Übrigen: Das Forum ist dazu da, Fragen zu stellen, zu beantworten und Hilfestellung zu geben. Es hat aber keinen Sinn, dir hier schriftlich vorzulesen, was sowieso schon im Tutorial steht. Ich antworte dir auch nicht, um dich zu demotivieren, sondern um dich in dir richtige Richtung zu schubsen.
In specifications, Murphy's Law supersedes Ohm's.
@Assassin4711,
Dieser Funktions Aufruf ist ein get-Request an einen Server:
Dazu findest du hier Informationen:
https://docs.python-requests.org/en/lat ... ession.get
Der Rückgabewert ist ein Response-Objekt, welches ein text Attribut hat:
https://docs.python-requests.org/en/lat ... ponse.text
Das wiederum enthält den HTML-Code.
Aus diesem HTML-Code kann man mit bs4 ein soup -Objekt erstellen, welches sich einfach mit Hilfe der bs4 Funktion find() durchsuchen lässt.
soup = BeautifulSoup(html_doc, 'html.parser')
https://www.crummy.com/software/Beautif ... uick-start
https://www.crummy.com/software/Beautif ... /doc/#find
Die Frage, die du dir vielleicht stellen solltest ist, die ob du programmieren lernen möchtest, oder ob du eine schnelle "egal wie" Lösung für dein Programm suchst.
Wenn du programmieren lernen möchtest, dann gehört dazu viel lernen, lesen und üben.
Man merkt dir aber an, dass du dich nicht wirklich mit dem Lernen beschäftigen möchtest. Das wiederum ist dann für die Hilfesteller hier auf Dauer demotivierend. Ich hoffe du verstehst das.
Wenn man merkt, dass du dich selber auch anstrengst, wird man dir immer gerne weiterhelfen.
Edit: Ja, ich gebe dir Recht, fast alle Dokumentationen sind auf Englisch geschrieben, wenn man das nicht gewohnt ist, kann es extra zäh werden weil man gleich zwei Themen lernen muss. Aber mit dem Link zum deutsch-sprachigen Pythontutorial kommst du schon sehr, sehr weit.
Dieser Funktions Aufruf ist ein get-Request an einen Server:
Code: Alles auswählen
bookie_data = requests.get("https://www.oddsportal.com/tennis/usa/atp-san-diego/nishikori-kei-murray-andy-AcCphyfM/?r=1/")
https://docs.python-requests.org/en/lat ... ession.get
Der Rückgabewert ist ein Response-Objekt, welches ein text Attribut hat:
https://docs.python-requests.org/en/lat ... ponse.text
Das wiederum enthält den HTML-Code.
Aus diesem HTML-Code kann man mit bs4 ein soup -Objekt erstellen, welches sich einfach mit Hilfe der bs4 Funktion find() durchsuchen lässt.
soup = BeautifulSoup(html_doc, 'html.parser')
https://www.crummy.com/software/Beautif ... uick-start
https://www.crummy.com/software/Beautif ... /doc/#find
Die Frage, die du dir vielleicht stellen solltest ist, die ob du programmieren lernen möchtest, oder ob du eine schnelle "egal wie" Lösung für dein Programm suchst.
Wenn du programmieren lernen möchtest, dann gehört dazu viel lernen, lesen und üben.
Man merkt dir aber an, dass du dich nicht wirklich mit dem Lernen beschäftigen möchtest. Das wiederum ist dann für die Hilfesteller hier auf Dauer demotivierend. Ich hoffe du verstehst das.
Wenn man merkt, dass du dich selber auch anstrengst, wird man dir immer gerne weiterhelfen.
Edit: Ja, ich gebe dir Recht, fast alle Dokumentationen sind auf Englisch geschrieben, wenn man das nicht gewohnt ist, kann es extra zäh werden weil man gleich zwei Themen lernen muss. Aber mit dem Link zum deutsch-sprachigen Pythontutorial kommst du schon sehr, sehr weit.
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
Na so ist es nicht ganz. Klar will man immer schnelle Lösungen für Probleme haben, aber ich will das programmieren mit python auch erlernen und ich werde es auch lernen.
Aber ich habe einfach immer nur abend zwei drei stunden dafür zeit. Andonsten steht job und familie eben im Vordergrund.
Ich habe mir auch so wie jetzt python vba über viele Jahre hinweg beigebracht und ich bin da jetzt auch nicht der Profi aber ich bekomme jedes Problem, auch ohne Fragen in einem forum gelöst. Insoweit solltet ihr nicht meine lernbereitschaft anzweifeln. Ich mach es nur nicht so schnell wie ihr es euch wünscht. Ich werde jetzt aber erstmal das tutorial durch arbeiten und euch bis dahin nicht mehr beanspruchen.
Naja wobei ich zum Tutorial schon zur ersten Seite zehn Fragen hätte
Aber ich habe einfach immer nur abend zwei drei stunden dafür zeit. Andonsten steht job und familie eben im Vordergrund.
Ich habe mir auch so wie jetzt python vba über viele Jahre hinweg beigebracht und ich bin da jetzt auch nicht der Profi aber ich bekomme jedes Problem, auch ohne Fragen in einem forum gelöst. Insoweit solltet ihr nicht meine lernbereitschaft anzweifeln. Ich mach es nur nicht so schnell wie ihr es euch wünscht. Ich werde jetzt aber erstmal das tutorial durch arbeiten und euch bis dahin nicht mehr beanspruchen.
Naja wobei ich zum Tutorial schon zur ersten Seite zehn Fragen hätte
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@Assassin4711: Deine Lenbereitschaft zweifle ich doch gar nicht an, aber deine Lernstrategie. Wenn du Fragen zum Tutiorial hatm kannst du sie hire ebenfalls gerne stellen.
In specifications, Murphy's Law supersedes Ohm's.
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
Ich verstehe nicht was die unter Windows mit Interpreter meinen. Wenn man kein jupyter oder ähnliches benutzt macht man das doch über die Eingabeaufforderung. Wäre das dann der Interpreter? Vorausgesetzt python ist installiert.
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Assassin4711: python.exe ist der Interpreter.
https://de.wikipedia.org/wiki/Interpreter sagt: „Als Interpreter wird ein Computerprogramm bezeichnet, das eine Abfolge von Anweisungen anscheinend direkt ausführt, […]“
https://de.wikipedia.org/wiki/Interpreter sagt: „Als Interpreter wird ein Computerprogramm bezeichnet, das eine Abfolge von Anweisungen anscheinend direkt ausführt, […]“
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
Ah ja ... ich habe python bevor ich jupyter benutzt habe immer innerhalb der Eingabeaufforderung mit Eingabe von "python" gestartet. Das Ergebnis ist quasi das gleiche... Also offensichtlich ...
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
jetzt sicherlich eine dumme Frage:
Ich hätte jetzt erwartet das ich als Ergebnis Hund , Katze bekomme. Wieso stehen im Ergebnis die ' mit dabei? Ich übergebe doch einen gewöhnlichen String
Was ist der Unterschied zu dem:
Wieso lässt er dann hier die ' weg?
Code: Alles auswählen
a = []
b = []
a = 'Hund'
b = 'Katze'
c = a , b
c
Code: Alles auswählen
('Hund', 'Katze')
Was ist der Unterschied zu dem:
Code: Alles auswählen
a = []
b = []
a = "Hund"
b = "Katze"
c = (a + "," + b)
print (c)
Code: Alles auswählen
Hund,Katze
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Die ersten beiden Zuweisungen an `a` und `b` mit den leeren Listen machen keinen Sinn, weil die Werte ja nirgends verwendet werden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 77
- Registriert: Mittwoch 8. September 2021, 14:22
Wie meinst von welchem Typ c ist? Da ich da zwei Strings aneinanderkette hätte ich gedacht es wäre auch ein String.