BeautifulSoup - Tag existiert beim Crawlen nicht?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Guten Abend,

ich möchte aus einer Seite nach einem bestimmten Inhalt crawlen, meist aus einem "iframe"/"video" - Tag.
Den Inhalt,der gesucht wird, lautet wie folgt (ein Bsp.):

Code: Alles auswählen

<div id="AjaxStream" style="clear: both">
	<iframe src="censored.html" width="100%" height="440px" allowfullscreen="true" webkitallowfullscreen="true" mozallowfullscreen="true" frameborder="0"></iframe>
</div>
Über den Browser wird mir der Tag angezeigt, aber bei BeautifulSoup zeigt es nur die "div" an, aber ohne Inhalt.

Ich frage mich nur wieso? Ich verstehe das nicht...

Python Skript (das Wichtigste):

Code: Alles auswählen

self.hostHTML = self.session.get(self.url)
self.hostSOUP = bs(self.hostHTML.text,"html5lib")
print(self.hostSOUP.prettify())
Grüße,
xXSkyWalkerXx1
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@xXSkyWalkerXx1: Der Inhalt wird ziemlich sicher im Browser durch JavaScript-Code hinzugefügt. Die `id` ist ja ziemlich deutlich.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
snafu
User
Beiträge: 6867
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wenn das HTML nachträglich durch JavaScript verändert wird, dann nutzt man am besten Selenium. Dies zieht sich das HTML der Website direkt aus der Engine des Browsers und verarbeitet dadurch auch JS wie ein Browser (bzw lässt es verarbeiten). Somit erhält man das Ergebnis so wie man es im Firefox oder Chrome als Benutzer in der Code-Ansicht sehen würde.

Einige Anwendungsbeispiele, um an die gewünschten Tags zu kommen, finden sich unter https://selenium-python.readthedocs.io/ ... ments.html
Antworten