it Завдання
Створення парсеру новин із веб-сайту на Python
Створення парсеру новин із веб-сайту на Python
Завдання по створенню парсера новин на Python. Проект на базі requests і BeautifulSoup для вилучення заголовків новин з веб-сторінок і збереження їх у файл.
Парсер – це програма, яка автоматично витягує дані з вебсайтів. Ваше завдання – розробити парсер на Python, який буде збирати заголовки новин із зазначеної вебсторінки та зберігати їх у текстовий файл. Це корисний проєкт для вивчення роботи з вебзапитами, парсингом HTML-коду та обробкою даних.
Вимоги до завдання:
- Користувач вводить URL вебсторінки, з якої необхідно зібрати заголовки.
- Парсер повинен знаходити заголовки новин, наприклад, усі елементи з тегом
<h2>або певним класом. - Усі заголовки мають бути збережені у файл
news_headlines.txt. - Якщо парсеру не вдається отримати дані, програма повинна вивести зрозуміле повідомлення про помилку.
Рішення завдання
Нижче наведено приклад реалізації парсера з використанням бібліотеки 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)Як протестувати?
- Переконайтеся, що встановлено бібліотеки
requestsіbeautifulsoup4. Якщо ні, встановіть їх за допомогою команди:pip install requests beautifulsoup4 - Запустіть програму, введіть URL сторінки з новинами, наприклад:
https://example.com/news - Відкрийте файл
news_headlines.txtі переконайтеся, що заголовки збережені коректно.
Більше цікавих новин
Хто має отримати доступ до сервера? Завдання на логіку
5 логічних завдань, які дають junior-розробникам
Задача про троих хирургов
Задача о производственной линии
Коментарі