Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions parcing_2.ipynb
Original file line number Diff line number Diff line change
@@ -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
}