Das Problem ist, kehrt die find()
ein einzelnes Element (a Tag
Instanz), die auch iterable sein können - Sie über das Element Kinderlaufen würden. Und da es nur ein einziges Kind gibt - einen Textknoten, würde die Antwort von @Dekel funktionieren.
Aber Sie nicht wirklich brauchen, die for
Schleife und einfach direkt den Text erhalten:
page = soup.find("div", {"class":"listing-count-label listing-count-holder listing-count-holder-header"})
print(page.get_text())
Auch brauchen Sie nicht wirklich alle Klassen eines Elements es zu lokalisieren aufzulisten,
soup.find("div", class_="listing-count-label")
Oder mit einem CSS selector:
soup.select_one("div.listing-count-label")
Sie können eine einzelne verwenden
Aber, da man bis zum Seitenanzahl sind, warum nicht finden wir das Element durch den Text ein regular expression mit - und wir die gleichen regulären Ausdruck verwenden werden, die Seitenanzahl Nummer zu extrahieren:
>>> import re
>>> from bs4 import BeautifulSoup
>>>
>>> data = """<div class="listing-count-label listing-count-holder listing-count-holder-header">8007 listings, showing 1 to 156</div>"""
>>>
>>> pattern = re.compile(r"\d+ listings, showing \d+ to (\d+)")
>>>
>>> soup = BeautifulSoup(data, "html.parser")
>>>
>>> pattern.search(soup.find(text=pattern)).group(1)
u'156'
Und Sie können es in eine ganze Zahl umwandeln mit int()
. Aber dieser Code fehlt Fehlerbehandlung - Dinge können schief gehen - stellen Sie sicher, dass Fehler entsprechend behandelt werden.
'x.text.split (‘ ‚) [- 1]' würde du Seite Nr. – user902384