Використання бібліотеки BeautifulSoup для парсингу сайтів на присутність забороненого контенту
Автор: Lord1317 • Май 24, 2026 • Лабораторная работа • 789 Слов (4 Страниц) • 2 Просмотры
Хмельницький національний університет
Факультет інформаційних технологій
Кафедра кібербезпеки
ЛАБОРАТОРНА РОБОТА № 9
Дисципліна Алгоритми та структури даних
Спеціальність 125 –Кібербезпека
на тему Використання бібліотеки BeautifulSoup для парсингу сайтів на присутність забороненого контенту.
ЛРКБЗІ.7512376.24.01.02 ПЗ
Виконала: студентка 2 курсу, група КБЗІ-24-1 Євгенія ПРОКОПЕНКО
Підпис Ініціали, прізвище
Перевірив: ____ Ігор МУЛЯР
Науковий ступінь, вчене звання Підпис Ініціали, прізвище
Хмельницький 2026
Мета: Навчитися використовувати пакети Python для парсингу вебдодатків.
Завдання до лабораторної роботи:
Реалізуйте програму, яка для вебсторінки заданої викладачем буде підраховувати частоту появи слів у тексті новини, частоту появи html-тегів, кількість посилань та зображень.
[pic 1]
Рисунок 1 - Блок-схема алгоритму парсингу вебсторінки
Код:
import requests
from bs4 import BeautifulSoup
from collections import Counter
import string
import re
def analyze_webpage(url):
try:
response = requests.get(url)
if response.status_code != 200:
print(f"Помилка доступу до сайту. Код: {response.status_code}")
return
soup = BeautifulSoup(response.text, 'html.parser')
links = soup.find_all('a')
links_count = len(links)
images = soup.find_all('img')
images_count = len(images)
all_tags = soup.find_all()
tags_names = [tag.name for tag in all_tags]
tags_frequency = Counter(tags_names)
for script in soup(["script", "style"]):
script.extract()
text = soup.get_text()
words = re.findall(r'\b\w+\b', text.lower())
words = [word for word in words if len(word) > 2]
words_frequency = Counter(words)
print(f"--- Результати аналізу для: {url} ---\n")
print(f"1. Кількість зображень (<img>): {images_count}")
print(f"2. Кількість посилань (<a>): {links_count}")
print("\n3. Топ-10 найчастіших HTML-тегів:")
for tag, count in tags_frequency.most_common(10):
print(f" <{tag}>: {count}")
print("\n4. Топ-10 найчастіших слів у тексті:")
for word, count in words_frequency.most_common(10):
print(f" '{word}': {count}")
except Exception as e:
print(f"Виникла помилка при виконанні програми: {e}")
if __name__ == "__main__":
target_url = input("Введіть URL сторінки для аналізу (приклад вводу, https://www.bbc.com/ukrainian): ")
if not target_url:
target_url = "https://www.python.org/"
if not target_url.startswith("http"):
target_url = "https://" + target_url
analyze_webpage(target_url)
...