Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Avansert Søk | Arbeide med Elementattributter i Beautiful Soup
Webskraping med Python

bookAvansert Søk

Visse HTML-tagger krever obligatoriske attributter, for eksempel må anker-taggen ha href-attributtet, eller <img> må ha src-attributtet. Hvis du er interessert i en bestemt attributt, kan du bruke .get()-metoden etter .attrs. For eksempel kan vi hente ut alle src-attributtene til alle <img>-elementene.

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

Du kan også støte på id-attributtet, som er ganske vanlig og brukes til å skille elementer med samme tag. Hvis du er interessert i bestemte attributtverdier, kan du sende dem som en ordbok (i formatet attr_name: attr_value) som parameter til .find_all() (umiddelbart etter at du har spesifisert taggen du søker etter). For eksempel er vi kun interessert i <div>-elementer med class-attributtet satt til "box", eller vi søker etter <p>-elementet med en "id"-attributtverdi lik "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

Vi brukte metoden .find() (i stedet for .find_all()) for å hente elementet med en spesifikk id, siden id er en unik identifikator og det ikke kan finnes mer enn ett element med samme verdi. For å sikre at vi kun hentet bestemte <div>-elementer, la oss undersøke hvilke klasser <div>-elementene har.

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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain what the output of the last code block will look like?

How can I filter `<div>` elements by multiple classes?

What other attributes can I filter elements by using BeautifulSoup?

Awesome!

Completion rate improved to 4.35

bookAvansert Søk

Sveip for å vise menyen

Visse HTML-tagger krever obligatoriske attributter, for eksempel må anker-taggen ha href-attributtet, eller <img> må ha src-attributtet. Hvis du er interessert i en bestemt attributt, kan du bruke .get()-metoden etter .attrs. For eksempel kan vi hente ut alle src-attributtene til alle <img>-elementene.

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

Du kan også støte på id-attributtet, som er ganske vanlig og brukes til å skille elementer med samme tag. Hvis du er interessert i bestemte attributtverdier, kan du sende dem som en ordbok (i formatet attr_name: attr_value) som parameter til .find_all() (umiddelbart etter at du har spesifisert taggen du søker etter). For eksempel er vi kun interessert i <div>-elementer med class-attributtet satt til "box", eller vi søker etter <p>-elementet med en "id"-attributtverdi lik "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

Vi brukte metoden .find() (i stedet for .find_all()) for å hente elementet med en spesifikk id, siden id er en unik identifikator og det ikke kan finnes mer enn ett element med samme verdi. For å sikre at vi kun hentet bestemte <div>-elementer, la oss undersøke hvilke klasser <div>-elementene har.

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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 5
some-alt