DEV Community

Excalibra
Excalibra

Posted on

[Python] Скрипт для получения новостей с сайта Chita.ru

Получение новостей с Chita.ru с помощью Python

Это в основном вдохновлено Python-скриптом для парсинга новостей, статистического анализа сегментации текста и генерации облаков слов, как это реализовано в проектах на платформе CSDN. Я также написал собственный скрипт для более точной классификации сложных новостных записей, связанный с аспектами искусственного интеллекта и машинного обучения. Я попробовал, но объем работы оказался слишком большим, и оказалось проще использовать существующую классификацию с новостного портала Chita.ru. Учитывая, что исходный код из упомянутой статьи сложно читать, а также то, что он включает дополнительные библиотеки, такие как облака слов, его сложно сделать кроссплатформенным, поэтому я решил написать свой собственный скрипт.

Данный скрипт позволяет извлечь новости с сайта Chita.ru и сохранить их в Excel.

Используемые библиотеки: requests, BeautifulSoup для парсинга и openpyxl для работы с Excel.

Удобный способ запуска скрипта

Вы можете выполнить скрипт прямо из терминала с помощью следующей команды.

Эта команда скачивает и выполняет Python-скрипт для получения новостей с Chita.ru:

python -c "$(curl -fsSL https://ghp.ci/https://raw.githubusercontent.com/Excalibra/scripts/main/d-python/get_chita_news.py)"
Enter fullscreen mode Exit fullscreen mode

Скрипт на Python (доступен на GitHub):

Посмотреть на GitHub

import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook
from datetime import datetime

# -----Справочные материалы, три основных-------
# https://docs.python-requests.org/en/latest/
# https://www.crummy.com/software/BeautifulSoup/bs4/doc/
# https://openpyxl.readthedocs.io/en/stable/
# https://docs.python.org/3/library/stdtypes.html#str.strip (срезы)
# -----Справочные материалы, три основных-------

# 5.1 Добавление формата времени для имени файла
now = datetime.now()
formatted_time = now.strftime('%Y-%m-%d')

# Создаем объект Workbook для работы с Excel
wb = Workbook()
sheet = wb.active
sheet.title = 'Лист1'

# Добавляем заголовки таблицы
sheet['A1'] = 'Заголовок'
sheet['B1'] = 'Категория'
sheet['C1'] = 'Время'

# Проходим по страницам с 1 по 2
for page_num in range(1, 3):
    url = f"https://www.chita.ru/text/?page={page_num}"
    headers = {'User-Agent': 'Mozilla/5.0'}
    r = requests.get(url, headers=headers)
    r.encoding = 'utf-8'
    soup = BeautifulSoup(r.text, 'html.parser')

    title_elements = soup.find_all('div', class_='dmp3V')
    category_elements = soup.find_all('div', class_='VC1Fb') 
    time_elements = soup.find_all('div', class_='tzxtk')

    for news_num in range(len(category_elements)):
        sheet.append([category_elements[news_num].text.strip('[]'), title_elements[news_num].text, time_elements[news_num].text])

# Сохраняем Excel файл
wb.save(f"chita_{formatted_time}.xlsx")
Enter fullscreen mode Exit fullscreen mode

Лучше всего использовать с рядом научных статей по анализу больших данных:

  • И. В. Соколова, А. В. Кузнецова - «Исследование извлечения социальных рисков на основе популярных новостных запросов в поисковых системах» (Институт системного анализа РАН, Системы и сети, Том 39, № 1, Январь 2020)
  • Д. И. Федоров - «Анализ функционала новостных сервисов в социальной сети ВКонтакте в условиях больших данных» (Московский государственный университет, Факультет журналистики, 2017)
  • В. А. Павлов - «Тенденции чтения новостей в сети в России: на примере популярных поисковых запросов» (Московский государственный университет, Современные медиа, 2013, № 9)
  • И. Н. Гусев - «Социальная атмосфера и структурные особенности российской общественной мысли в условиях анализа больших данных» (РГУ, Журнал РГУ, 2013, № 5)

Top comments (0)