Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Розширений пошук | Робота з Атрибутами Елементів у Beautiful Soup
Web Scraping з Python

bookРозширений пошук

Деякі HTML-теги вимагають обов'язкових атрибутів, наприклад, тег anchor потребує атрибута href, а <img> — атрибута src. Якщо вас цікавить певний атрибут, можна скористатися методом .get() після .attrs. Наприклад, отримаймо всі атрибути src для всіх елементів <img>.

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

Ви також можете зустріти атрибут id, який є досить поширеним і використовується для розрізнення елементів з однаковим тегом. Якщо вас цікавлять конкретні значення атрибутів, їх можна передати у вигляді словника (у форматі attr_name: attr_value) як параметр для .find_all() (відразу після вказання тега, який ви шукаєте). Наприклад, нас цікавлять лише елементи <div> з атрибутом class, що дорівнює "box", або ми шукаємо елемент <p> зі значенням атрибута "id" рівним "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

Ми використали метод .find() (замість .find_all()), щоб отримати елемент із певним id, оскільки id є унікальним ідентифікатором, і не може бути більше одного елемента з однаковим значенням. Щоб переконатися, що ми отримали лише конкретні елементи <div>, розглянемо класи, які мають елементи <div>.

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

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 5

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

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

bookРозширений пошук

Свайпніть щоб показати меню

Деякі HTML-теги вимагають обов'язкових атрибутів, наприклад, тег anchor потребує атрибута href, а <img> — атрибута src. Якщо вас цікавить певний атрибут, можна скористатися методом .get() після .attrs. Наприклад, отримаймо всі атрибути src для всіх елементів <img>.

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

Ви також можете зустріти атрибут id, який є досить поширеним і використовується для розрізнення елементів з однаковим тегом. Якщо вас цікавлять конкретні значення атрибутів, їх можна передати у вигляді словника (у форматі attr_name: attr_value) як параметр для .find_all() (відразу після вказання тега, який ви шукаєте). Наприклад, нас цікавлять лише елементи <div> з атрибутом class, що дорівнює "box", або ми шукаємо елемент <p> зі значенням атрибута "id" рівним "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

Ми використали метод .find() (замість .find_all()), щоб отримати елемент із певним id, оскільки id є унікальним ідентифікатором, і не може бути більше одного елемента з однаковим значенням. Щоб переконатися, що ми отримали лише конкретні елементи <div>, розглянемо класи, які мають елементи <div>.

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

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 5
some-alt