{ "cells": [ { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "import datetime\n", "import requests\n", "\n", "from bs4 import BeautifulSoup\n", "import pandas as pd\n", "\n", "requests_session = requests.Session()\n", "\n", "dates = []\n", "topics = []\n", "titles = []\n", "contents = [] # Новый список для хранения текста статей\n", "\n", "for day in range(0, 2):\n", " num_pages = 1\n", " while True:\n", " date = (datetime.datetime.today() - datetime.timedelta(days=day)).strftime('%Y/%m/%d')\n", " url = f'https://lenta.ru/{date}/page/{num_pages}/'\n", " link = requests_session.get(url)\n", " soup = BeautifulSoup(link.text, 'lxml')\n", " \n", " news_list = soup.find_all('a', {\"class\": \"card-full-news _archive\"}, href=True)\n", " if len(news_list) == 0:\n", " # Если на странице нет новостей, переходим к следующей дате\n", " break\n", "\n", " for news in news_list:\n", " # Дата\n", " dates.append(date)\n", " \n", " # Заголовок\n", " title = news.find_all('h3', {\"class\": \"card-full-news__title\"})\n", " titles.append(title[0].get_text() if len(title) > 0 else 'None')\n", " \n", " # Рубрика/тема\n", " topic = news.find_all('span', {\"class\": \"card-full-news__info-item card-full-news__rubric\"})\n", " topics.append(topic[0].get_text() if len(topic) > 0 else 'None')\n", " \n", " # Переходим по ссылке, чтобы собрать текст статьи\n", " news_url = 'https://lenta.ru' + news['href']\n", " article_req = requests_session.get(news_url)\n", " article_soup = BeautifulSoup(article_req.text, 'lxml')\n", " \n", " # Ищем все абзацы с классом topic-body__content-text\n", " paragraphs = article_soup.find_all('p', class_='topic-body__content-text')\n", " \n", " # Склеиваем все абзацы в одну строку\n", " news_content = ' '.join([p.get_text(strip=True) for p in paragraphs])\n", " contents.append(news_content)\n", " \n", " num_pages += 1\n", "\n", "# Формируем DataFrame, добавляя столбец 'content'\n", "df = pd.DataFrame({\n", " 'dates': dates,\n", " 'topics': topics,\n", " 'titles': titles,\n", " 'content': contents\n", "})\n", "\n", "df['dates'] = pd.to_datetime(df['dates'])\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | dates | \n", "topics | \n", "titles | \n", "content | \n", "
|---|---|---|---|---|
| 0 | \n", "2025-03-12 | \n", "Бывший СССР | \n", "На Украине назвали условие для переговоров с Р... | \n", "Главаофиса президентаУкраиныВладимира Зеленско... | \n", "
| 1 | \n", "2025-03-12 | \n", "Россия | \n", "12 марта: какой праздник отмечают в России и мире | \n", "В России 12 марта празднуют День запрета на ун... | \n", "
| 2 | \n", "2025-03-12 | \n", "Бывший СССР | \n", "На Украине заявили о возобновлении помощи со с... | \n", "Замглавы офиса президента Украины Павел Палиса... | \n", "
| 3 | \n", "2025-03-12 | \n", "Наука и техника | \n", "ВСУ заковали немецкую БМП Marder в цепи | \n", "БойцыВооруженных силУкраины(ВСУ) заковали неме... | \n", "
| 4 | \n", "2025-03-12 | \n", "Мир | \n", "Макрон прокомментировал возможное прекращение ... | \n", "ПрезидентФранцииЭммануэль Макронзаявил, что пр... | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 796 | \n", "2025-03-11 | \n", "Мир | \n", "Раскрыта цель Трампа в урегулировании на Украине | \n", "Бывший британский дипломат и экс-сотрудник MI-... | \n", "
| 797 | \n", "2025-03-11 | \n", "Бывший СССР | \n", "На Украине подвели итоги переговоров в Саудовс... | \n", "Бывший советникофиса президентаУкраиныАлексей ... | \n", "
| 798 | \n", "2025-03-11 | \n", "Мир | \n", "Трамп допустил полное прекращение огня на Укра... | \n", "ПрезидентСШАДональд Трампрассчитывает, что реж... | \n", "
| 799 | \n", "2025-03-11 | \n", "Россия | \n", "В Госдуме прокомментировали готовность Украины... | \n", "ДепутатГосдумыМихаил Шереметв беседе сТАССпрок... | \n", "
| 800 | \n", "2025-03-11 | \n", "Бывший СССР | \n", "На Украине анонсировали переговоры с США о пре... | \n", "Главаофиса президентаУкраиныВладимира Зеленско... | \n", "
801 rows × 4 columns
\n", "| \n", " | dates | \n", "topics | \n", "titles | \n", "content | \n", "
|---|---|---|---|---|
| 16 | \n", "2025-03-12 | \n", "Экономика | \n", "Пенсию некоторых россиян предложили увеличить | \n", "ДепутатыГосдумыотЛДПРпредложили ввести доплату... | \n", "
| 21 | \n", "2025-03-12 | \n", "Экономика | \n", "Мошенники начали использовать самозапрет на кр... | \n", "Мошенники воспользовались недавно заработавшим... | \n", "
| 26 | \n", "2025-03-12 | \n", "Интернет и СМИ | \n", "Мужчина дал совет одному сыну и случайно разру... | \n", "ПользовательRedditс ником Samus 10011 поделилс... | \n", "
| 53 | \n", "2025-03-12 | \n", "Экономика | \n", "Синоптик допустил влияние потепления климата н... | \n", "Научный руководитель ГидрометцентраРоман Вильф... | \n", "
| 61 | \n", "2025-03-12 | \n", "Экономика | \n", "Власти разъяснили запрет на иностранные мессен... | \n", "Сотрудникам банков введут запрет на использова... | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 730 | \n", "2025-03-11 | \n", "Экономика | \n", "В США оценили эффективность санкций против рос... | \n", "Эффективность западных санкций в отношении рос... | \n", "
| 757 | \n", "2025-03-11 | \n", "Экономика | \n", "Медиахолдинг МАЕР поддержит ветеранов СВО в ра... | \n", "Медиахолдинг МАЕР заявил о готовности предоста... | \n", "
| 759 | \n", "2025-03-11 | \n", "Интернет и СМИ | \n", "Живущая в доме престарелых телеведущая бросила... | \n", "Известная американская телеведущая Венди Уилья... | \n", "
| 767 | \n", "2025-03-11 | \n", "Интернет и СМИ | \n", "Названа угроза для переговоров США и Украины | \n", "Присутствие руководителяофиса президентаУкраин... | \n", "
| 791 | \n", "2025-03-11 | \n", "Экономика | \n", "Россиянам рассказали про налоги за сараи и дач... | \n", "Информация о том, что в России ввели обязатель... | \n", "
138 rows × 4 columns
\n", "