Wie kann ich mit Pandas und schöner Suppe einen Tisch aus einer Baseball-Referenz kratzen?
Posted: 14 Jan 2025, 10:55
Ich versuche, die Pitching-Statistiken dieser URL zu extrahieren und dann den Datenrahmen in einer CSV-Datei zu speichern.
https://www.baseball-reference.com/boxes/ARI /ARI202204070.shtml
Mein aktueller Code ist unten (Python 3.9.7)
Wenn ich diesen Code ausführe, erhalte ich die folgende Fehlermeldung:
Vergangene Code-Iterationen:
Dieser Code wird ausgeführt und beim Drucken der Tabelle ist die Ausgabe „[]“. Der gleiche Traceback oben wird auch als Ergebnis der letzten Zeile ausgegeben.
Ich verstehe, was der Fehler sagt, aber ich verstehe einfach nicht, wie das möglich ist. Es scheint, als ob die Funktion „soup.findall“ die spezifische Tabelle, die ich benötige, nicht finden kann, aber ich bin mir nicht sicher, warum. Wie kann ich dieses Problem beheben?
https://www.baseball-reference.com/boxes/ARI /ARI202204070.shtml
Mein aktueller Code ist unten (Python 3.9.7)
Code: Select all
_URL = "https://www.baseball-reference.com/boxes/ARI/ARI202204070.shtml"
data = pd.read_html(_URL,attrs={'id': 'ArizonaDiamondbackspitching'},header=1)[0]
data.to_csv('boxscore.csv', index='False')
return data
Code: Select all
Traceback (most recent call last):
File "d:\BaseballAlgo\Baseball_WhoWins.py", line 205, in
getBoxScore('ARI','2022-04-07')
File "d:\BaseballAlgo\Baseball_WhoWins.py", line 99, in getBoxScore
data = pd.read_html(_URL,attrs={'id': 'ArizonaDiamondbackspitching'},header=1)[0]
File "D:\BaseballAlgo\.venv\lib\site-packages\pandas\io\html.py", line 1240, in read_html
return _parse(
File "D:\BaseballAlgo\.venv\lib\site-packages\pandas\io\html.py", line 1003, in _parse
raise retained
File "D:\BaseballAlgo\.venv\lib\site-packages\pandas\io\html.py", line 983, in _parse
tables = p.parse_tables()
File "D:\BaseballAlgo\.venv\lib\site-packages\pandas\io\html.py", line 249, in parse_tables
tables = self._parse_tables(self._build_doc(), self.match, self.attrs)
File "D:\BaseballAlgo\.venv\lib\site-packages\pandas\io\html.py", line 598, in _parse_tables
raise ValueError("No tables found")
ValueError: No tables found
Code: Select all
session = BRefSession()
_URL = "https://www.baseball-reference.com/boxes/ARI/ARI202204070.shtml"
content =session.get(_URL).content
soup = BeautifulSoup(content, "html.parser")
table = soup.find_all('table', id="ArizonaDiamondbackspitching")
print (table)
data = pd.read_html(StringIO(str(table)))[0]
Ich verstehe, was der Fehler sagt, aber ich verstehe einfach nicht, wie das möglich ist. Es scheint, als ob die Funktion „soup.findall“ die spezifische Tabelle, die ich benötige, nicht finden kann, aber ich bin mir nicht sicher, warum. Wie kann ich dieses Problem beheben?