Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Erweiterte Suche | Arbeiten mit Elementattributen in Beautiful Soup
Web Scraping Mit Python

bookErweiterte Suche

Bestimmte HTML-Tags erfordern zwingende Attribute, wie zum Beispiel das Ankertag, das das href-Attribut benötigt, oder <img>, das das src-Attribut voraussetzt. Bei Interesse an einem bestimmten Attribut kann die Methode .get() nach .attrs verwendet werden. Zum Beispiel können alle src-Attribute aller <img>-Elemente abgerufen werden.

12345678910111213
# Importing libraries from bs4 import BeautifulSoup from urllib.request import urlopen # Reading web page url = "https://codefinity-content-media.s3.eu-west-1.amazonaws.com/18a4e428-1a0f-44c2-a8ad-244cd9c7985e/page.html" page = urlopen(url) html = page.read().decode("utf-8") # Reading HTML with BeautifulSoup soup = BeautifulSoup(html, "html.parser") for img in soup.find_all("img"): print(img.attrs.get("src"))
copy

Das id-Attribut ist ebenfalls häufig anzutreffen und dient zur Unterscheidung von Elementen mit demselben Tag. Bei Interesse an bestimmten Attributwerten können diese als Dictionary (im Format attr_name: attr_value) als Parameter für .find_all() übergeben werden (direkt nach der Angabe des gesuchten Tags). Beispielsweise werden nur <div>-Elemente mit dem class-Attributwert "box" gesucht oder das <p>-Element mit dem "id"-Attributwert "id2".

12345678910111213141516
# Importing libraries from bs4 import BeautifulSoup from urllib.request import urlopen # Reading web page url = "https://codefinity-content-media.s3.eu-west-1.amazonaws.com/18a4e428-1a0f-44c2-a8ad-244cd9c7985e/page.html" page = urlopen(url) html = page.read().decode("utf-8") # Reading HTML with BeautifulSoup soup = BeautifulSoup(html, "html.parser") for div in soup.find_all("div", {"class": "box"}): print(div) # Filtering by id attribute value print(soup.find("p", {"id": "id2"}))
copy

Die Methode .find() wurde (anstelle von .find_all()) verwendet, um das Element mit einer bestimmten id abzurufen, da die id ein eindeutiger Bezeichner ist und es nicht mehr als ein Element mit demselben Wert geben kann. Um sicherzustellen, dass nur bestimmte <div>-Elemente abgerufen werden, sollten die Klassen der <div>-Elemente überprüft werden.

12345678910111213
# Importing libraries from bs4 import BeautifulSoup from urllib.request import urlopen # Reading web page url = "https://codefinity-content-media.s3.eu-west-1.amazonaws.com/18a4e428-1a0f-44c2-a8ad-244cd9c7985e/page.html" page = urlopen(url) html = page.read().decode("utf-8") # Reading HTML with BeautifulSoup soup = BeautifulSoup(html, "html.parser") for div in soup.find_all("div"): print(div.attrs.get("class"))
copy

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 5

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 4.35

bookErweiterte Suche

Swipe um das Menü anzuzeigen

Bestimmte HTML-Tags erfordern zwingende Attribute, wie zum Beispiel das Ankertag, das das href-Attribut benötigt, oder <img>, das das src-Attribut voraussetzt. Bei Interesse an einem bestimmten Attribut kann die Methode .get() nach .attrs verwendet werden. Zum Beispiel können alle src-Attribute aller <img>-Elemente abgerufen werden.

12345678910111213
# Importing libraries from bs4 import BeautifulSoup from urllib.request import urlopen # Reading web page url = "https://codefinity-content-media.s3.eu-west-1.amazonaws.com/18a4e428-1a0f-44c2-a8ad-244cd9c7985e/page.html" page = urlopen(url) html = page.read().decode("utf-8") # Reading HTML with BeautifulSoup soup = BeautifulSoup(html, "html.parser") for img in soup.find_all("img"): print(img.attrs.get("src"))
copy

Das id-Attribut ist ebenfalls häufig anzutreffen und dient zur Unterscheidung von Elementen mit demselben Tag. Bei Interesse an bestimmten Attributwerten können diese als Dictionary (im Format attr_name: attr_value) als Parameter für .find_all() übergeben werden (direkt nach der Angabe des gesuchten Tags). Beispielsweise werden nur <div>-Elemente mit dem class-Attributwert "box" gesucht oder das <p>-Element mit dem "id"-Attributwert "id2".

12345678910111213141516
# Importing libraries from bs4 import BeautifulSoup from urllib.request import urlopen # Reading web page url = "https://codefinity-content-media.s3.eu-west-1.amazonaws.com/18a4e428-1a0f-44c2-a8ad-244cd9c7985e/page.html" page = urlopen(url) html = page.read().decode("utf-8") # Reading HTML with BeautifulSoup soup = BeautifulSoup(html, "html.parser") for div in soup.find_all("div", {"class": "box"}): print(div) # Filtering by id attribute value print(soup.find("p", {"id": "id2"}))
copy

Die Methode .find() wurde (anstelle von .find_all()) verwendet, um das Element mit einer bestimmten id abzurufen, da die id ein eindeutiger Bezeichner ist und es nicht mehr als ein Element mit demselben Wert geben kann. Um sicherzustellen, dass nur bestimmte <div>-Elemente abgerufen werden, sollten die Klassen der <div>-Elemente überprüft werden.

12345678910111213
# Importing libraries from bs4 import BeautifulSoup from urllib.request import urlopen # Reading web page url = "https://codefinity-content-media.s3.eu-west-1.amazonaws.com/18a4e428-1a0f-44c2-a8ad-244cd9c7985e/page.html" page = urlopen(url) html = page.read().decode("utf-8") # Reading HTML with BeautifulSoup soup = BeautifulSoup(html, "html.parser") for div in soup.find_all("div"): print(div.attrs.get("class"))
copy

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 5
some-alt