Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Avancerad Sökning | Arbeta med Elementattribut i Beautiful Soup
Web Scraping med Python

bookAvancerad Sökning

Vissa HTML-taggar kräver obligatoriska attribut, såsom att ankartaggen kräver attributet href eller <img> som kräver attributet src. Om du är intresserad av ett specifikt attribut kan du använda metoden .get() efter .attrs. Till exempel, låt oss hämta alla src-attribut för alla <img>-element.

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 även stöta på attributet id, vilket är ganska vanligt och används för att särskilja element under samma tagg. Om du är intresserad av specifika attributvärden kan du ange dem som en ordbok (i formatet attr_name: attr_value) som parameter till .find_all() (omedelbart efter att du har specificerat taggen du söker efter). Till exempel är vi intresserade av endast <div>-element med attributet class satt till "box", eller så söker vi efter <p>-elementet med attributet "id" satt till värdet "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

Metoden .find() användes (istället för .find_all()) för att hämta elementet med ett specifikt id eftersom id är en unik identifierare, och det kan inte finnas mer än ett element med samma värde. För att säkerställa att endast specifika <div>-element hämtades, undersök vilka klasser <div>-elementen 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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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

bookAvancerad Sökning

Svep för att visa menyn

Vissa HTML-taggar kräver obligatoriska attribut, såsom att ankartaggen kräver attributet href eller <img> som kräver attributet src. Om du är intresserad av ett specifikt attribut kan du använda metoden .get() efter .attrs. Till exempel, låt oss hämta alla src-attribut för alla <img>-element.

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 även stöta på attributet id, vilket är ganska vanligt och används för att särskilja element under samma tagg. Om du är intresserad av specifika attributvärden kan du ange dem som en ordbok (i formatet attr_name: attr_value) som parameter till .find_all() (omedelbart efter att du har specificerat taggen du söker efter). Till exempel är vi intresserade av endast <div>-element med attributet class satt till "box", eller så söker vi efter <p>-elementet med attributet "id" satt till värdet "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

Metoden .find() användes (istället för .find_all()) för att hämta elementet med ett specifikt id eftersom id är en unik identifierare, och det kan inte finnas mer än ett element med samma värde. För att säkerställa att endast specifika <div>-element hämtades, undersök vilka klasser <div>-elementen 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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 5
some-alt