Seite 1 von 1
HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Mittwoch 17. Juli 2019, 06:37
von Kirikkayis
Hey,
ich habe eine riesen HTML-Content.
Nun muss ich diese nach einem ganz spezifischem <td> durchsuchen, dieser sieht wie folgt aus:
<td class=" cb TABLE0 TAB_CHECK_SEL_CSS tr_rowspan1 td5">
<Input class=" ….." type="Checkbox" name="KNZ_SEL00000_X" value ="..."
WICHTIG: ich muss td parsen, da der Name nach jedem refresh der seite eine andere Variable (X) zugewiesen bekommt, bspl:
1. refresh: name="KNZ_SEL00000_4"
2. refresh: name="KNZ_SEL00000_6"
3. refresh: name="KNZ_SEL00000_17"
usw.
daher sollte ich nach der td class = "cb TABLE0 TAB_CHECK_SEL_CSS tr_rowspan1 td5" parsen.
Versucht habe ich folgendes:
Code: Alles auswählen
soup.find(td, {'class': 'cb TABLE0 TAB_CHECK_SEL_CSS tr_rowspan1 td5'})
Ich erhalte leider immer: [ ]
Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Mittwoch 17. Juli 2019, 06:41
von Jankie
Versuch mal das 'td' in Anführungszeichen zu setzen.
Code: Alles auswählen
soup.find('td', {'class': 'cb TABLE0 TAB_CHECK_SEL_CSS tr_rowspan1 td5'})
Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Mittwoch 17. Juli 2019, 06:50
von Kirikkayis
hab es eben mal wie folgt probiert:
ich erhalte nun das gewünschte Ergebnis:
<td class="cb TABLE0 TAB_CHECK">
<Input class="cb TABLE0" id="KNZ_SEL00000_1" Name="KNZ_SEL00000_1" ...
wie kann ich nun die "id" bzw. den "namen" ausgeben?
Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Mittwoch 17. Juli 2019, 06:59
von Jankie
Hey, ich glaube das geht mit:
Bin mir aber nicht sicher und kann es leider nicht testen, da ich nicht deine Daten habe..
Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Mittwoch 17. Juli 2019, 07:04
von Kirikkayis
Hey, danke für die schnelle Antwort, leider habe ich folgende Probleme damit:
1. bei mir wird das ".get" nicht mal vorgeschlagen in meinem Editor
2. ich Erhalte als Ausgabe "None"
Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Mittwoch 17. Juli 2019, 07:58
von OozeWithUzi
Ist da überhaupt ein Attribut mit dem Namen "id" drin? Das kommt aus deinem Beispiel nämlich nicht vor.
Tags können wie Dictionarys abgefragt werden, von daher sollte das get() dort greifen.
Alternativ kannst du auch:
schreiben.
Mit
siehst du genau, was er da alles an Attributen im Tag findet.
Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Mittwoch 17. Juli 2019, 08:01
von Jankie
Bei mir klappt es so:
Code: Alles auswählen
soup = BeautifulSoup('<Input class="cb TABLE0" id="KNZ_SEL00000_1" Name="KNZ_SEL00050_1"></class>')
table = soup.find(class_="cb TABLE0")
print(f"ID = {table.get('id')}")
print(f"Name = {table.get('name')}")
Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Mittwoch 17. Juli 2019, 08:37
von OozeWithUzi
OozeWithUzi hat geschrieben: Mittwoch 17. Juli 2019, 07:58
Ist da überhaupt ein Attribut mit dem Namen "id" drin? Das kommt aus deinem Beispiel nämlich nicht vor.
Kein Kaffee und früh am morgen bedingt Blindheit scheinbar

Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Mittwoch 17. Juli 2019, 08:40
von snafu
Da ist ja offenbar auch die ID vom input-Element gemeint. Demnach also:
Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Donnerstag 18. Juli 2019, 13:11
von Kirikkayis
Jap, vielen Dank für die unterstützenden Ideen.
Habe es jetzt wie folgt:
Code: Alles auswählen
soup = BeautifulSoup(file, 'lxml')
table = soup.find(class_"cb TABLE TAB_CHECK_SEL tr_rowspan1 td2")
table1 = table.find('input', attrs={'type':'checkbox'})['id']
print(table1)
Re: HTML-Datei nach spezifischem <td class= ...> suchen
Verfasst: Donnerstag 18. Juli 2019, 13:59
von __blackjack__
Das kompiliert aber nicht, wegen Syntaxfehler. Und `table1` ist an sich schon ein schlechter Name, aber inhaltlich passt der mal so gar nicht zu dem Wert eines `id`-Attributs von einem <input>-Element.