diff --git a/parcing_2.ipynb b/parcing_2.ipynb new file mode 100644 index 0000000..abf0f79 --- /dev/null +++ b/parcing_2.ipynb @@ -0,0 +1,147 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 240, + "id": "656f7301", + "metadata": {}, + "outputs": [], + "source": [ + "from pprint import pprint\n", + "from lxml import html\n", + "import requests" + ] + }, + { + "cell_type": "markdown", + "id": "32883acd", + "metadata": {}, + "source": [ + "### Task 1" + ] + }, + { + "cell_type": "code", + "execution_count": 241, + "id": "a01264cf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Название раздела - Наука; ссылка - /rubrics/science/science/\n", + "Название раздела - В России; ссылка - /rubrics/science/inrussia/\n", + "Название раздела - Космос; ссылка - /rubrics/science/cosmos/\n", + "Название раздела - Оружие; ссылка - /rubrics/science/mil/\n", + "Название раздела - История; ссылка - /rubrics/science/history/\n", + "Название раздела - Здоровье; ссылка - /rubrics/science/natural/\n", + "Название раздела - Будущее; ссылка - /rubrics/science/future/\n", + "Название раздела - Техника; ссылка - /rubrics/science/digital/\n", + "Название раздела - Гаджеты; ссылка - /rubrics/science/gadget/\n", + "Название раздела - Игры; ссылка - /rubrics/science/games/\n", + "Название раздела - Софт; ссылка - /rubrics/science/soft/\n" + ] + } + ], + "source": [ + "url = 'https://lenta.ru/rubrics/science/'\n", + "\n", + "headers = {\n", + " 'User_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 YaBrowser/22.11.0.2419 Yowser/2.5 Safari/537.36'\n", + "}\n", + "\n", + "data_parc = requests.get(url=url,headers=headers)\n", + "dom = html.fromstring(data_parc.text)\n", + "\n", + "#Вычленим ссылки на разные разделы \"Науки и Техники\"\n", + "section_links = dom.xpath('.//main/div/div/div[2]/a/@href')\n", + "section_names = dom.xpath('.//main/div/div/div[2]/a/text()')\n", + "\n", + "# Избавляемся от раздела \"Все\"\n", + "section_links.pop(0)\n", + "section_names.pop(0)\n", + "\n", + "for i in range(len(section_links)):\n", + " print(f'Название раздела - {section_names[i]}; ссылка - {section_links[i]}')" + ] + }, + { + "cell_type": "code", + "execution_count": 242, + "id": "8274c0dc", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Создадим словарь, для хранения информации, где key - раздел, value - список из новостей\n", + "news_dict = {}\n", + "\n", + "# Теперь будем проходиться по этим разделам и собирать название,ссылку и дату публикации\n", + "for i, section in enumerate(section_links):\n", + " url = 'https://lenta.ru' + section\n", + "\n", + " data_parc = requests.get(url=url,headers=headers)\n", + " dom = html.fromstring(data_parc.text)\n", + "\n", + " news_names = dom.xpath('.//main/div/section/ul/li/a/h3/text()')\n", + " news_links = dom.xpath('.//main/div/section/ul/li/a/@href')\n", + " news_line_publ = dom.xpath('.//main/div/section/ul/li/a/div/time/text()') \n", + " \n", + " section_list= []\n", + " for ind in range(len(news_names)):\n", + " line = news_names[ind],'https://lenta.ru' + news_links[ind],news_line_publ[ind]\n", + " section_list.append(line)\n", + " news_dict[f'{section_names[i]}'] = section_list" + ] + }, + { + "cell_type": "code", + "execution_count": 243, + "id": "0964f33c", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 dict_keys(['Наука', 'В России', 'Космос', 'Оружие', 'История', 'Здоровье', 'Будущее', 'Техника', 'Гаджеты', 'Игры', 'Софт'])\n", + "2 ('Доказано существование разрывов в ядрах красных гигантов', 'https://lenta.ru/news/2022/12/19/core/', '13:01')\n", + "3 ('Кодзима раскрыл детали продолжения Death Stranding', 'https://lenta.ru/news/2022/12/16/death_stranding/', '18:33, 16 декабря 2022')\n", + "4 ('Названы сроки выхода Spider-Man 2', 'https://lenta.ru/news/2022/12/16/spider_man/', '14:54, 16 декабря 2022')\n" + ] + } + ], + "source": [ + "print(1,news_dict.keys())\n", + "print(2,news_dict['Наука'][0])\n", + "print(3,news_dict['Игры'][0])\n", + "print(4,news_dict['Игры'][1])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}