it Завдання Створення парсеру новин із веб-сайту на Python
Створення парсеру новин із веб-сайту на Python

Створення парсеру новин із веб-сайту на Python

5 742
20 листопада 2024 в 14:27

Завдання по створенню парсера новин на Python. Проект на базі requests і BeautifulSoup для вилучення заголовків новин з веб-сторінок і збереження їх у файл.

Парсер – це програма, яка автоматично витягує дані з вебсайтів. Ваше завдання – розробити парсер на Python, який буде збирати заголовки новин із зазначеної вебсторінки та зберігати їх у текстовий файл. Це корисний проєкт для вивчення роботи з вебзапитами, парсингом HTML-коду та обробкою даних.


Вимоги до завдання:

  1. Користувач вводить URL вебсторінки, з якої необхідно зібрати заголовки.
  2. Парсер повинен знаходити заголовки новин, наприклад, усі елементи з тегом <h2> або певним класом.
  3. Усі заголовки мають бути збережені у файл news_headlines.txt.
  4. Якщо парсеру не вдається отримати дані, програма повинна вивести зрозуміле повідомлення про помилку.


Рішення завдання

Нижче наведено приклад реалізації парсера з використанням бібліотеки requests для отримання даних і BeautifulSoup для обробки HTML-коду.

import requests
from bs4 import BeautifulSoup

def fetch_news_headlines(url):
	"""
	Отримує заголовки новин із зазначеної сторінки та зберігає їх у файл.
 
	:param url: URL вебсторінки для парсингу.
	"""
	try:
		# Надсилання HTTP-запиту до сторінки
		response = requests.get(url)
 
		# Перевірка успішності запиту
		if response.status_code != 200:
			print(f"Помилка: Не вдалося отримати доступ до {url}. Статус код: {response.status_code}")
			return
 
		# Розбір HTML-коду сторінки за допомогою BeautifulSoup
		soup = BeautifulSoup(response.text, 'html.parser')
 
		# Витягування всіх заголовків (наприклад, теги <h2>)
		headlines = soup.find_all('h2') # Можна налаштувати на потрібний тег або клас
 
		if not headlines:
			print("Заголовки новин не знайдено.")
			return
 
		# Збереження заголовків у файл
		with open('news_headlines.txt', 'w', encoding='utf-8') as file:
			for i, headline in enumerate(headlines, start=1):
				# Отримання тексту з тега
				text = headline.get_text(strip=True)
				file.write(f"{i}. {text}\n")
 
		print(f"Заголовки новин успішно збережено у 'news_headlines.txt'.")
 
	except requests.RequestException as e:
		# Обробка помилок під час виконання HTTP-запиту
		print(f"Помилка з'єднання: {e}")
	except Exception as e:
		# Обробка інших можливих помилок
		print(f"Сталася помилка: {e}")

if __name__ == "__main__":
	# Введення URL від користувача
	url = input("Введіть URL сторінки з новинами: ").strip()
	fetch_news_headlines(url)

Як протестувати?

  1. Переконайтеся, що встановлено бібліотеки requests і beautifulsoup4. Якщо ні, встановіть їх за допомогою команди:
    pip install requests beautifulsoup4
    
  2. Запустіть програму, введіть URL сторінки з новинами, наприклад:
    https://example.com/news
  3. Відкрийте файл news_headlines.txt і переконайтеся, що заголовки збережені коректно.

Більше цікавих новин

Коментарі
Додати коментар

Поки що коментарів немає