Как на Python написать парсер для сбора заголовков новостей с сайта, используя библиотеку BeautifulSoup?

Для написания парсера заголовков новостей на Python с использованием библиотеки BeautifulSoup вам потребуется установить две зависимости: `requests` для выполнения HTTP-запросов и `beautifulsoup4` для разбора HTML. Установите их командой:

pip install requests beautifulsoup4

**Шаг 1. Получение HTML-страницы**

Используйте библиотеку `requests`, чтобы загрузить содержимое нужного сайта:

python
import requests
from bs4 import BeautifulSoup
import csv
from datetime import datetime

url = ‘https://news.ycombinator.com/’ # пример новостного сайта
headers = {‘User-Agent’: ‘Mozilla/5.0’}
response = requests.get(url, headers=headers)
response.encoding = ‘utf-8’
html = response.text

Заголовок `User-Agent` важен — многие сайты блокируют запросы без него.

**Шаг 2. Разбор HTML с BeautifulSoup**

Передайте полученный HTML в объект BeautifulSoup и найдите нужные элементы:

python
soup = BeautifulSoup(html, ‘html.parser’)
headlines = soup.find_all(‘a’, class_=’storylink’) # класс зависит от сайта

Класс или тег нужно подбирать под конкретный сайт через инструменты разработчика браузера (F12 → Inspect).

**Шаг 3. Извлечение данных**

python
news_data = []
for item in headlines:
title = item.get_text(strip=True)
link = item.get(‘href’, »)
news_data.append({‘title’: title, ‘link’: link, ‘parsed_at’: datetime.now().isoformat()})

**Шаг 4. Сохранение в CSV**

python
with open(‘news_headlines.csv’, ‘w’, newline=», encoding=’utf-8′) as f:
writer = csv.DictWriter(f, fieldnames=[‘title’, ‘link’, ‘parsed_at’])
writer.writeheader()
writer.writerows(news_data)

print(f’Сохранено {len(news_data)} заголовков.’)

**Важные советы:**
— Всегда проверяйте `robots.txt` сайта перед парсингом.
— Добавляйте задержки между запросами (`time.sleep(1)`), чтобы не перегружать сервер.
— Для динамических сайтов (JavaScript-рендеринг) используйте `Selenium` или `Playwright` вместо `requests`.
— Обрабатывайте исключения: `response.raise_for_status()` поможет поймать ошибки HTTP.

Таким образом, весь процесс занимает около 20–30 строк кода и легко адаптируется под любой новостной ресурс.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.