Seite 1 von 1

BeautifulSoup - Tag existiert beim Crawlen nicht?

Verfasst: Freitag 31. Januar 2020, 22:57
von xXSkyWalkerXx1
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

Re: BeautifulSoup - Tag existiert beim Crawlen nicht?

Verfasst: Freitag 31. Januar 2020, 23:50
von __blackjack__
@xXSkyWalkerXx1: Der Inhalt wird ziemlich sicher im Browser durch JavaScript-Code hinzugefügt. Die `id` ist ja ziemlich deutlich.

Re: BeautifulSoup - Tag existiert beim Crawlen nicht?

Verfasst: Samstag 1. Februar 2020, 07:00
von snafu
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