Beautiful Soup - Tabelle auslesen
Verfasst: Mittwoch 13. Februar 2019, 10:44
Hallo zusammen,
vorab: ich bin totaler Neuanfänger und muss für die Uni ein kleines Programm schreiben.
Mir fehlen entsprechendes Fachjargon, aber ich hoffe ihr könnt mich trotzdem verstehen und weiterhelfen.
Und Nein, ich möchte nicht, dass ihr meine "Hausaufgaben" löst. Ich benötige nur einen kleinen Denkanstoß.
Jetzt zum eigentlichen Problem: Ich muss Daten aus Tabellen unterschiedlicher Webseiten ziehen.
Bei Webseite 1 hat alles problemlos funktioniert. Bei Webseite 2 bekomme ich die ensprechende Spalte aufgrund fehlender eindeutiger Attribute, die ich suchen könnte, nicht ausgegeben.
Anbei mein Programmcode:
# Vorbereitung
import requests
from bs4 import BeautifulSoup
from tkinter import *
import tkinter
#Kennzahl 1: Weltrisikoindex (betrifft Umweltkatastrophen)
html1 = requests.get("https://www.laenderdaten.de/indizes/wel ... index.aspx")
soup1 = BeautifulSoup(html1.content, "html5lib")
#1. Schritt: Länder in Liste schreiben
liste_1=[]
laender = soup1.find_all("a")[27:198]
for land in laender:
liste_1.append(land.get_text())
#2. Schritt: Index in Liste schreiben
liste_2=[]
index = soup1.find_all("b")[9:198]
for ind in index:
liste_2.append(ind.get_text())
#Kennzahl 2: Korruptionswahrnehmungsindex
html2 = requests.get("https://www.laenderdaten.de/indizes/cpi.aspx")
soup2 = BeautifulSoup(html2.content, "html5lib")
#1. Schritt: Länder in Liste schreiben
liste_3=[]
laender2 = soup2.find_all("a")[26:204]
for land2 in laender2:
liste_3.append(land2.get_text())
#Bis hierhin liefs noch ganz gut... Dann kommt das Problem
#2. Schritt: Index in Liste schreiben
liste_4=[]
index2 = soup2.find_all("b")[8:203] #hier möchte ich Spalte 3 (CPI-Wert 2018) ausgegeben bekommen. Ich weiß nur nicht nach welchem Attribut ich suchen soll, b gibt mir diesmal natürlich nur den Rang aus...
for ind2 in index2:
liste_4.append(ind2.get_text())
Ich hoffe, dass mir hier jemand mit einem kleinen Tipp weiterhelfen kann.
Lieben Dank und beste Grüße
vorab: ich bin totaler Neuanfänger und muss für die Uni ein kleines Programm schreiben.
Mir fehlen entsprechendes Fachjargon, aber ich hoffe ihr könnt mich trotzdem verstehen und weiterhelfen.
Und Nein, ich möchte nicht, dass ihr meine "Hausaufgaben" löst. Ich benötige nur einen kleinen Denkanstoß.
Jetzt zum eigentlichen Problem: Ich muss Daten aus Tabellen unterschiedlicher Webseiten ziehen.
Bei Webseite 1 hat alles problemlos funktioniert. Bei Webseite 2 bekomme ich die ensprechende Spalte aufgrund fehlender eindeutiger Attribute, die ich suchen könnte, nicht ausgegeben.
Anbei mein Programmcode:
# Vorbereitung
import requests
from bs4 import BeautifulSoup
from tkinter import *
import tkinter
#Kennzahl 1: Weltrisikoindex (betrifft Umweltkatastrophen)
html1 = requests.get("https://www.laenderdaten.de/indizes/wel ... index.aspx")
soup1 = BeautifulSoup(html1.content, "html5lib")
#1. Schritt: Länder in Liste schreiben
liste_1=[]
laender = soup1.find_all("a")[27:198]
for land in laender:
liste_1.append(land.get_text())
#2. Schritt: Index in Liste schreiben
liste_2=[]
index = soup1.find_all("b")[9:198]
for ind in index:
liste_2.append(ind.get_text())
#Kennzahl 2: Korruptionswahrnehmungsindex
html2 = requests.get("https://www.laenderdaten.de/indizes/cpi.aspx")
soup2 = BeautifulSoup(html2.content, "html5lib")
#1. Schritt: Länder in Liste schreiben
liste_3=[]
laender2 = soup2.find_all("a")[26:204]
for land2 in laender2:
liste_3.append(land2.get_text())
#Bis hierhin liefs noch ganz gut... Dann kommt das Problem
#2. Schritt: Index in Liste schreiben
liste_4=[]
index2 = soup2.find_all("b")[8:203] #hier möchte ich Spalte 3 (CPI-Wert 2018) ausgegeben bekommen. Ich weiß nur nicht nach welchem Attribut ich suchen soll, b gibt mir diesmal natürlich nur den Rang aus...
for ind2 in index2:
liste_4.append(ind2.get_text())
Ich hoffe, dass mir hier jemand mit einem kleinen Tipp weiterhelfen kann.
Lieben Dank und beste Grüße