@Parzival: Also der Syntaxfehler ist doch eigentlich logisch: Du kannst nicht erwarten das der Rechner " für den Anfang und das Ende einer Zeichenkette verwendet und gleichzeitig dieses Zeichen innerhalb dieser Zeichenkette verwenden.
Letztlich haben die `stat`-Werte aber auch keine `replace()`-Methode, denn das sind `Tag`-Objekte und keine Zeichenketten. Und was für Attribute und Methoden `Tag`-Objekte haben, wird in der `bs4`-Dokumentation mit Beispielen beschrieben.
Beim Importieren solltest Du Dir das umbenennen sparen. `uReq` ist deutlich unverständlicher als `urlopen` und `soup` wird in der Regel ein Exemplat von `BeautifulSoup` genannt und nicht die Klasse selbst. Klassen schreibt man auch nicht klein. Man schreibt aber sonst fast alles klein_mit_unterstrichen. Ausnahmen: Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase). Dementsprechend sollte man von `BeautifulSoup` auch keine Methoden wie `findAll()` mehr verwenden, die sind veraltet und es gibt konventionell benannte Methoden dafür.
Zwischen Funktion/Methode und der öffnenden Klammer eines Aufrufs gehört kein Leerzeichen.
Zeichenketten und Werte mit ``+`` und `str()` zusammenstückeln ist eher BASIC als Python. In Python gibt es dafür Zeichenkettenformatierung mit der `format()`-Methode, und ab Python 3.6 auch f-Zeichenkettenliterale.
Der Präfix `my_*` ist in aller Regel ganz fürchterlich unsinnig. Wenn es nicht noch `their_url` oder `our_url` gibt, ist `my_*` sinnfrei.
Das Antwortobjekt das `urlopen()` liefert ist ein Kontextmanager, kann also mit ``with`` verwendet werden.
Code: Alles auswählen
#!/usr/bin/env python3
from urllib.request import urlopen
from bs4 import BeautifulSoup
def main():
# ...
for player in steamid:
url = f'https://csgo-stats.com/player/{player}'
print(url)
with urlopen(url) as response:
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
for stat in soup('span', {'class': 'main-stats-data-row-data'}):
print(stat)
if __name__ == '__main__':
main()