Seite 1 von 1
Webseite nach Ausdruck durchsuchen
Verfasst: Samstag 16. Mai 2020, 23:41
von Maagi
Hallo zusammen,
habe bereits mehrfach vergeblich gegooglet und stelle aus diesem Grund hier meine Frage:
Ich durchsuche mit Beautiful Soup ein Forum mit mehreren Seiten. Nun möchte ich mir ausgeben lassen, wie viele Seiten das Forum insgesamt hat.
Der HTML-Code sieht so aus:
<span class="pages">Pages (657):</span>
. Hier soll mir 657 zurückgegeben werden.
Kann mir jemand helfen, wie ich das am besten mache?
Vielen Dank vorab!
LG Maagi
Re: Webseite nach Ausdruck durchsuchen
Verfasst: Sonntag 17. Mai 2020, 00:24
von __blackjack__
@Maagi: Sieht nach einem Job für einen regulären Ausdruck aus. Also per BeautifulSoup nach dem <span>-Tag mit der Klasse "pages" suchen, davon den Text nehmen, und aus dem dann per regulärem Ausdruck die Zahl auslesen.
Re: Webseite nach Ausdruck durchsuchen
Verfasst: Sonntag 17. Mai 2020, 19:10
von Maagi
Danke für die schnelle Antwort Blackjack!
habe zunächst mal probiert die passage aus der Webseite zu filtern:
Code: Alles auswählen
import re
from bs4 import BeautifulSoup
from bs4.dammit import EncodingDetector
import requests
r = requests.get('meine_url')
soup = BeautifulSoup(r.text, 'html.parser')
output = soup.find("span", {'class':'pages'})
print(output)
Leider bekomme ich immer "None" zurückgemeldet?! Woran liegt das, dass Python nichts findet?
Gruß und Danke!
Re: Webseite nach Ausdruck durchsuchen
Verfasst: Sonntag 17. Mai 2020, 19:16
von __deets__
Weil dein Ausdruck halt nicht zum HTML passt. Denn wenn ich deinen Ausschnitt oben nehme, und deine Code, dann bekomme ich ein Ergebnis:
Code: Alles auswählen
from bs4 import BeautifulSoup
HTML = """<html><body><span class="pages">Pages (657):</span></body></html>"""
soup = BeautifulSoup(HTML, 'html.parser')
output = soup.find("span", {'class':'pages'})
print(output)
Re: Webseite nach Ausdruck durchsuchen
Verfasst: Sonntag 17. Mai 2020, 19:46
von Maagi
Du hast recht!
Habe mir mal mit print(soup.prettify()) die komplette Seite angeschaut. Hier gibt es kein span der Klasse pages....
Wenn ich mir im Browser den Seitenquelltext anzeigen lasse sehe ich den Ausdruck allerdings schon?
Kann ich den Seitenquelltext irgendwie 1 zu 1 einlesen oder wie macht man sowas?
Re: Webseite nach Ausdruck durchsuchen
Verfasst: Sonntag 17. Mai 2020, 19:57
von __deets__
Dann ist das per JavaScript nachgeladen worden. Da musst du entweder die gleichen requests selbst machen, oder mit selenium arbeiten.