Wie kan nich das Kachel problem lösen?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Wenn es dir egal ist, ob es eine .csv oder eine .xlsx ist, dann kannst du statt der csv library die xlsxwriter Library verwenden.

import requests
import xlsxwriter as xls
from bs4 import BeautifulSoup

first_line = ['Position', 'Team', 'Played', 'Won', 'Drawn', 'Lost', 'For', 'Against', 'GD', 'Points']

result = requests.get("https://www.bbc.co.uk/sport/football/tables")
src = result.content
soup = BeautifulSoup(src, 'html.parser')
table = soup.find_all("table")
league_table = table[0] 
teams = league_table.find_all("tr")

workbook = xls.Workbook('prem_table_bs.xlsx')
worksheet = workbook.add_worksheet("My sheet")

row = 0
col = 0

for item in first_line:
   worksheet.write(row, col, item)
   col += 1

teams = league_table.find_all("tr")

for team in teams[1:21]:
   col = 0
   row += 1
   stats = team.find_all("td")

   for item in stats:
      if "team" in item.text or "against" in item.text:
         continue
      worksheet.write(row, col, item.text)
      col += 1
  
workbook.close()

Also eine CSV-Datei (comma separated value) sind Tabellen, welche mit einem Komma getrennt sind und mit jedem Texteditor zu öffnen sind.

Bei einer xlsx-Datei gibt es sowohl in Spaten als auch Zeilen schreiben. Mit dem Dateiformat kann man zudem auch Formeln öffnen und mehrere Worksheets bearbeiten

https://de.acervolima.com/unterschied-zwischen-csv-und-excel/

Woher ich das weiß:Hobby

jostjoel 
Beitragsersteller
 30.08.2022, 20:23

Danke dir wirklich viel mals

1
from bs4 import BeautifulSoup
import csv
output_file = csv.writer(open('prem_table_bs.csv', 'w'))
output_file.writerow(['Position', 'Team', 'Played', 'Won', 'Drawn', 'Lost', 'For', 'Against', 'GD', 'Points'])
result = requests.get("https://www.bbc.co.uk/sport/football/tables")
src = result.content
soup = BeautifulSoup(src, 'html.parser')
table = soup.find_all("table")
league_table = table[0]
teams = league_table.find_all("tr")

out = []
for team in teams[1:21]:
  stats = team.find_all("td")
  out.append([stats[0].text, stats[1].text, stats[2].text])

output_file.writerows(out)

Kannst mal so versuchen aber bin mir nicht sicher ob das klappen wird.

Eigentlich sollte es in mehreren Spalten verteilt sein.

Aber ich bin mir nicht mal 100% sicher welche Programmiersprache du verwendest. Vermutlich Python?


Hanibal545  30.08.2022, 10:32

Das liegt an dem Dateiformat.

Also eine CSV-Datei (comma separated value) sind Tabellen, welche mit einem Komma getrennt sind und mit jedem Texteditor zu öffnen sind.

Bei einer xlsx-Datei gibt es sowohl in Spaten als auch Zeilen schreiben. Mit dem Dateiformat kann man zudem auch Formeln öffnen und mehrere Worksheets bearbeiten

https://de.acervolima.com/unterschied-zwischen-csv-und-excel/

1