Создание парсера новостей с веб-сайта на 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и убедитесь, что заголовки сохранены корректно.
Больше интересных новостей
3 логические задачи по программированию
Решаем задачи, которые многих ставят в тупик
Решаем задачи, встречающиеся на собеседованиях
Найдите ошибку в коде