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

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

5 871
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 и убедитесь, что заголовки сохранены корректно.

Больше интересных новостей

Комментарии
Добавить комментарий

Пока комментариев нет