Python Idea

+13
с 2023

Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.

31 подписчик
2 подписки

Легкое приложение прогноза погоды

Сейчас ни чем не удивить приложениями как todo лист,прогнозом погоды.Но это идеальный пример навыков программиста.

Сегодня мы продолжим уроки по парсингу.Сделаем маленкий сайт с данными парсера.Использовать буду Flask.

pip install Flask
1

Продолжим с того же места. Давайте продолжим наше обсуждение, чтобы углубить наше понимание парсинга. Рассмотрим дополнительные аспекты и примеры, чтобы лучше осветить данную тему.

import requests from bs4 import BeautifulSoup #ссылка на сайт url = 'https://proglib.io/?tags%5B%5D=all&page=1' #responce-это запрос на сайт,а soup это очиститель который ищет части html responce = requests.get(url) soup = BeautifulSoup(responce.text, 'html.parser') #покажет код html сайта print(soup)

Иногда нужно получить информацию и записать ее например базу данных или в сайт. Как же это сделать? Ответ это парсинг.
Будем использовать requests, bs4(BeautifulSoup4). Вот внизу импортируем пишем в терминал.

pip install requests pip install beautifulsoup4
1

Парсинг веб-страниц является важной задачей для многих разработчиков и исследователей данных. Одним из популярных инструментов для автоматизации веб-браузера является Selenium. В этой статье мы рассмотрим пример использования Selenium для парсинга страницы и выполнения определенных действий.

Selenium: Selenium - это набор инструментов для авт…

1
Библия для python программистов

32 года назад Гвидо ван Россум создал Python.Ну и как у всех языков программирования имеются стандарты,и python тоже имеет их.

3

Ассинхроность дает нам плюс к многозадачности.Даваете посмотрим два примера кода:

Без ассинхроности

3

Хай,привет я думаю ты задумавался сделать телеграм бота,ну да потому что ты кликнул на эту статью.Пошли кодить.

Я буду использовать Telebot(PyTelegramBotApi) очень легкая библиотека:

1

Хай,сегодня мы будем делать свой менджер на pywebio. Погнали писать код.

pip install asyncio pip install pywebio
1

Сражу скажу я знаю что в коммах будет срач,но прошу помогите с освоением.

Я буду использовать Flask.

Сегодня покажу api hh и pywebio.

Импорты:

3

Сегодня я вам покажу парсер статьи на vc.ru.

Буду использовать beautifulsoup4,requests.

2
\n","lang":""}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"*{\n font-family: 'Poppins', sans-serif;\n color: antiquewhite;\n}\n\n.app{\n text-align:center;\n background:skyblue;\n border: 2px solid ;\n border-radius: 12px;\n padding: 5px;\n\n}\nbody{\n background:darkslateblue;\n}","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь результат всей работы:

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"d97c7896-7961-5f90-85a6-e6096c5e3d86","width":2862,"height":544,"size":11495,"type":"png","color":"94cbeb","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAOAA4AAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMHCP/EACMQAAEDAgUFAAAAAAAAAAAAAAEAAwQRVAIHFJLRCBIVGJX/xAAYAQADAQEAAAAAAAAAAAAAAAAAAgYFB//EACIRAAECBAcBAAAAAAAAAAAAAAABEQMEEnEFFBUhQVFhkf/aAAwDAQACEQMRAD8ApI6WMkywXDEmdwNKeSxc1XQ1nY1TcWI5MXm6KtnsL9XMlrKZ9HHynzcXsTWZ3z4Yq1ku6e3lazIWDIGsl3T28oZAZD//2Q=="}}}]}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":0,"reposts":0,"views":174,"hits":148,"reads":null,"online":0},"dateFavorite":0,"hitsCount":148,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/1265362","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":949603,"customUri":null,"subsiteId":1510590,"title":"№3Урок по парсингу🐍","date":1702302339,"dateModified":1702302339,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"

Сегодня мы продолжим уроки по парсингу.Сделаем маленкий сайт с данными парсера.Использовать буду Flask.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"pip install Flask","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Сделаю сервер и сделаю скрипт с просмотром времени.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import requests\nfrom bs4 import BeautifulSoup\n\nurl = 'https://proglib.io/?tags%5B%5D=all&page=1'\nresponce = requests.get(url)\nsoup = BeautifulSoup(responce.text, 'html.parser')\n\n\ncontent_card = soup.find_all('div', class_='preview-card__content')\nreview_card=soup.find_all('div',class_='preview-card__text')\n\ncontent_list = []\nreview_list=[]\n\nfor card in content_card:\n content_text = card.get_text(strip=True)\n content_list.append(content_text)\n\nfor review in review_card:\n review_text=review.get_text(strip=True)\n review_list.append(review_text)\n\n\nresult = content_list +review_list","lang":""}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"\n\n\n \n \n \n Мой работы\n\n\n\n
\n
\n
\n
\n\n

Утегенов Тархан

\n\n
\n
\n\n \n
\n
\n

{{greeting}}

\n

Список новостей

\n\n\n \n\n","lang":""}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from flask import Flask,render_template\nimport datetime\n\napp = Flask(__name__)\n\n@app.route('/')\ndef hello():\n now = datetime.datetime.now()\n if now.hour >= 6 and now.hour < 12:\n greeting = 'Доброе утро'\n elif now.hour >= 12 and now.hour < 18:\n greeting = 'Добрый день'\n elif now.hour >= 18 and now.hour < 24:\n greeting = 'Добрый вечер'\n else:\n greeting = 'Доброй ночи'\n\n\n\n\n\n return render_template('main.html', greeting=greeting)\n\nif __name__ == '__main__':\n app.run(debug=True)","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь мы дадим сайту наши данные.

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"b86e97b2-0352-5f84-a052-15a7aba6ec08","width":1920,"height":1080,"size":52482,"type":"png","color":"312d34","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAgQHCP/EACkQAAEBBQQLAAAAAAAAAAAAAAEIAAIFBiEDBBHREhYmMTZEUXGBkZT/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/8QAHBEBAAEEAwAAAAAAAAAAAAAAAAECEjFRESKh/9oADAMBAAIRAxEAPwDQLqeFRuO6IkhNlBQmAXgn2XWu6Duq2Ap0VITjqWm7xA71kxzCe2/VNM0TNTaKJ7jzdp17tlOBGSRmyaseJor9tpmwb//Z"}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Дадим данные сайту.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from flask import Flask,render_template\nimport datetime\nfrom scraper import result\napp = Flask(__name__)\n\n@app.route('/')\ndef hello():\n now = datetime.datetime.now()\n if now.hour >= 6 and now.hour < 12:\n greeting = 'Доброе утро'\n elif now.hour >= 12 and now.hour < 18:\n greeting = 'Добрый день'\n elif now.hour >= 18 and now.hour < 24:\n greeting = 'Добрый вечер'\n else:\n greeting = 'Доброй ночи'\n\n\n\n\n\n return render_template('main.html', greeting=greeting,content_list=result)\n\nif __name__ == '__main__':\n app.run(debug=True)","lang":""}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"","lang":""}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"0b8f8c07-8eaa-5d9c-bd76-0e77a3a9c91b","width":1920,"height":1080,"size":130671,"type":"png","color":"d7cbac","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAgJ/8QAJxAAAQIEAwkBAAAAAAAAAAAAAQIFAAMEBwYRMRIVFhdRUnGUodH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgD/xAAbEQACAgMBAAAAAAAAAAAAAAAAARESAjFRkf/aAAwDAQACEQMRAD8AvSjtRaOclKEWnwmpOgO55KvpENmVbLog2VtMTnyqwsM+jVJjSyZfX6zHwvj0lKSl4rQdk6VC+7zC3olAOJcRjR/cvbmfsMgf/9k="}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Ну вот и все.

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":0,"reposts":0,"views":278,"hits":1270,"reads":null,"online":0},"dateFavorite":0,"hitsCount":1270,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/949603-o3urok-po-parsingu","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[{"id":1,"count":1}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":948510,"customUri":null,"subsiteId":1510590,"title":"№2Уроки по парсингу на Python🐍","date":1702262852,"dateModified":1702262852,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"

Продолжим с того же места. Давайте продолжим наше обсуждение, чтобы углубить наше понимание парсинга. Рассмотрим дополнительные аспекты и примеры, чтобы лучше осветить данную тему.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import requests\nfrom bs4 import BeautifulSoup\n\n#ссылка на сайт \nurl = 'https://proglib.io/?tags%5B%5D=all&page=1'\n\n#responce-это запрос на сайт,а soup это очиститель который ищет части html\nresponce = requests.get(url)\nsoup = BeautifulSoup(responce.text, 'html.parser')\n#покажет код html сайта\nprint(soup)","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь давайте внесем изменения в код. Мы будем использовать метод find_all для сбора всех тегов, заданных в коде. Обычно чаще всего используется метод find_all, но также существует метод find, который находит первый совпавший тег на веб-странице в формате HTML.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import requests\nfrom bs4 import BeautifulSoup\n\n#ссылка на сайт \nurl = 'https://proglib.io/?tags%5B%5D=all&page=1'\n\n#responce-это запрос на сайт,а soup это очиститель который ищет части html\nresponce = requests.get(url)\nsoup = BeautifulSoup(responce.text, 'html.parser')\n\ncontent_card = soup.find_all('div', class_='preview-card__content')\nreview_card=soup.find_all('div',class_='preview-card__text')","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь мы отфильтруем результаты и составим подробный список объяснений, которые я расскажу позже. Важно отметить, что при фильтрации результатов мы переведем значения в список,что дает нам работать с бд и другими инструментами.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import requests\nfrom bs4 import BeautifulSoup\n\nurl = 'https://proglib.io/?tags%5B%5D=all&page=1'\nresponce = requests.get(url)\nsoup = BeautifulSoup(responce.text, 'html.parser')\n\n\ncontent_card = soup.find_all('div', class_='preview-card__content')\nreview_card=soup.find_all('div',class_='preview-card__text')\n\ncontent_list = []\nreview_list=[]\n\nfor card in content_card:\n content_text = card.get_text(strip=True)\n content_list.append(content_text)\n\nfor review in review_card:\n review_text=review.get_text(strip=True)\n review_list.append(review_text)\n\n\nresult = content_list +review_list","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь у нас есть значение result где есть название и описание статьй.Проверим как работает это.

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"af092f76-f472-5818-b7a7-a75a8029ee3e","width":7239,"height":427,"size":698367,"type":"png","color":"2b2e34","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAQMFCP/EACEQAAEDAwQDAAAAAAAAAAAAAAEABRECBEEDEiEkMVHi/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAMBAv/EABYRAQEBAAAAAAAAAAAAAAAAAAAhEf/aAAwDAQACEQMRAD8Ax7fPmg4UkXLfuM7qSNQCKsnikTMDjEK9SKF4wwJY7gnPc+FlNTT4XQEn2g//2Q=="}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Вот на сайте:

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"695f0793-08dd-5ff1-95e3-04027fd7c1ad","width":1920,"height":1080,"size":92655,"type":"png","color":"262b33","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAQYI/8QAJBAAAQIEBQUAAAAAAAAAAAAAAQIDAAQFEQYSEyEiQlFhgaH/xAAYAQACAwAAAAAAAAAAAAAAAAAEBQACA//EABwRAAICAwEBAAAAAAAAAAAAAAECABIREyFSIv/aAAwDAQACEQMRAD8AyriZDlPpr8ywZlK0AKCrrA98yIa6kH1iD7XPMyGOLK6TtPOjwHV2H2KZXyJLP6Mas87qFGqvKb3GY2O8Al2qOzRQLGLDTRZbJaQSUjpHaGyAVEXOxsez/9k="}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь закончим здесь.Скоро будет еще одна серия.

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":4,"favorites":0,"reposts":0,"views":518,"hits":1434,"reads":null,"online":0},"dateFavorite":0,"hitsCount":1434,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/948510-o2uroki-po-parsingu-na-python","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":945345,"customUri":null,"subsiteId":1510590,"title":"№1Уроки по парсингу на Python🐍","date":1701954430,"dateModified":1701954430,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"

Иногда нужно получить информацию и записать ее например базу данных или в сайт. Как же это сделать? Ответ это парсинг.
Будем использовать requests, bs4(BeautifulSoup4). Вот внизу импортируем пишем в терминал.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"pip install requests\npip install beautifulsoup4","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь пристум к работе.Ишем сайт где мы будем брать данные например proglib.

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"Вот лента новостей,кликайте на название правай кнопкой и там будет \"просмотреть код\".","image":{"type":"image","data":{"uuid":"683a0dcc-62f9-5928-9340-245ca8a175a2","width":718,"height":733,"size":55490,"type":"png","color":"303847","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAABQj/xAAiEAABAgYBBQAAAAAAAAAAAAABAgMABBESEyEFFVFSgZH/xAAYAQADAQEAAAAAAAAAAAAAAAAAAQIEBf/EABgRAAMBAQAAAAAAAAAAAAAAAAABETEC/9oADAMBAAIRAxEAPwCXn1ybqi65JSKlKFbsCzU96gbjtOdO6Y0opgYWWySemy3q8CKFEOcq88Q0C6ugGhcdaETgB2Rfmr7DA//Z"}}}]}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"0df55de7-cf2c-508d-ab1e-921d7660b3dd","width":5389,"height":2565,"size":10571202,"type":"png","color":"2a2c33","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAQIFCP/EACQQAAIBBAECBwAAAAAAAAAAAAECAwAEERIFEyEVMTNBUnLR/8QAFgEBAQEAAAAAAAAAAAAAAAAAAwQC/8QAIhEBAAEDAwQDAAAAAAAAAAAAAQACAyEREjETUXGRYbHB/9oADAMBAAIRAxEAPwDGfC3Qa2vI3EMaLPFHlY1TA1lPcgDPl71TfartO3Bp4IdjZaq3Zz5YGZNji+GM/KiLJpye5pv5wPqNwKJ4ZO+o2N8oJx3I6T/tUoNoXu/RBoXqJ8H7JsvqP9jUkZ5n/9k="}}}]}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import requests\nfrom bs4 import BeautifulSoup\n\n#ссылка на сайт \nurl = 'https://proglib.io/?tags%5B%5D=all&page=1'\n\n#responce-это запрос на сайт,а soup это очиститель который ищет части html\nresponce = requests.get(url)\nsoup = BeautifulSoup(responce.text, 'html.parser')\n#покажет код html сайта\nprint(soup)","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Думаю здесь я закончу ,хочу спросить продолжать уроки по парсингу?

"}},{"type":"quiz","cover":false,"hidden":false,"anchor":"","data":{"uid":"","hash":"f832f51d387bb37d","tmp_hash":"","title":"Продолжать уроки по парсингу?","items":{"a17019543780":"Да","a17019543781":"Нет"},"is_public":false,"date_created":0}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":1,"reposts":0,"views":416,"hits":1493,"reads":null,"online":0},"dateFavorite":0,"hitsCount":1493,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/945345-o1uroki-po-parsingu-na-python","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[{"id":1,"count":1}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":721455,"customUri":null,"subsiteId":1510590,"title":"Selenium №1 урок","date":1686241515,"dateModified":1686241515,"blocks":[{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Парсинг веб-страниц является важной задачей для многих разработчиков и исследователей данных. Одним из популярных инструментов для автоматизации веб-браузера является Selenium. В этой статье мы рассмотрим пример использования Selenium для парсинга страницы и выполнения определенных действий.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Selenium: Selenium - это набор инструментов для автоматизации веб-браузера, который позволяет программистам взаимодействовать с веб-страницами, выполнять действия, такие как клики, заполнение форм и извлечение данных. Одним из главных преимуществ Selenium является его способность работать с различными браузерами, такими как Chrome, Firefox, Safari и другими.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Установка и настройка: Для начала работы с Selenium вам потребуется установить несколько зависимостей. В приведенном примере мы используем Chrome в качестве браузера и библиотеку webdriver_manager для автоматической установки необходимого драйвера Chrome.

"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Инсталяция"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Я нашел библиотеку которая сама скачивает webdriver и вот она:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from selenium import webdriver\ndriver = webdriver.Chrome(ChromeDriverManager().install())","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь добавим url и используем блок try и finally,здесь мы хотим нажать на лайк.А вот как ?:

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Смотри вот есть url и нам надо найти в html элемент.

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"Теперь нажми правую кнопку мыши и нажми \"Копировать XPath\".","image":{"type":"image","data":{"uuid":"def23a9e-ddb5-50d4-ba74-c6af4d9efb25","width":1573,"height":816,"size":73323,"type":"png","color":"161617","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Здесь используй find_element и все что ты скопировал вставь.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"def parsing():\n try:\n driver = webdriver.Chrome(ChromeDriverManager().install())\n driver.get(\"https://www.youtube.com/shorts/Y2cLlI7VCus\")\n like_button = driver.find_element(By.XPATH, '//*[@id=\"like-button\"]/yt-button-shape/label/button/yt-touch-feedback-shape/div/div[2]')\n like_button.click()\n time.sleep(10)\n finally:\n driver.quit()\n\nparsing()","lang":""}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Весь код"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from selenium import webdriver\nfrom selenium.webdriver.common.by import By\nfrom webdriver_manager.chrome import ChromeDriverManager\nimport time\n\ndef parsing():\n try:\n driver = webdriver.Chrome(ChromeDriverManager().install())\n driver.get(\"https://www.youtube.com/shorts/Y2cLlI7VCus\")\n like_button = driver.find_element(By.XPATH, '//*[@id=\"like-button\"]/yt-button-shape/label/button/yt-touch-feedback-shape/div/div[2]')\n like_button.click()\n time.sleep(10)\n finally:\n driver.quit()\n\nparsing()","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

В приведенном коде мы импортируем необходимые модули из библиотеки Selenium. Затем мы создаем экземпляр веб-драйвера Chrome, используя ChromeDriverManager().install() для автоматической установки драйвера, если он не установлен. После этого мы открываем веб-страницу и находим элемент кнопки \"Like\" с помощью XPath. Затем мы выполняем клик на этой кнопке и ждем 10 секунд с помощью функции time.sleep(), прежде чем завершить выполнение.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Заключение: Selenium предоставляет удобные инструменты для автоматизации веб-браузера и выполнения различных задач, включая парсинг веб-страниц. В этой статье мы рассмотрели пример использования Selenium для выполнения парсинга страницы и выполнения действий, таких как клик на элементе. Вы можете использовать эти принципы и адаптиров

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Если хочешь зацени ролик и спасибо за просмотр статьй.

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":2,"reposts":0,"views":580,"hits":568,"reads":null,"online":0},"dateFavorite":0,"hitsCount":568,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/721455-selenium-o1-urok","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[{"id":1,"count":1}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":700494,"customUri":null,"subsiteId":1510590,"title":"Библия для python программистов","date":1684583560,"dateModified":1684583560,"blocks":[{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"335dc01a-f971-55d4-afd6-c2dc491c8b9e","width":1920,"height":1080,"size":592977,"type":"png","color":"6796bc","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

32 года назад Гвидо ван Россум создал Python.Ну и как у всех языков программирования имеются стандарты,и python тоже имеет их.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Библия для Python это PEP8.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Что есть в PEP8:

"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["Внешний вид кода","Коментарий","Стили названий","Общие рекомендаций"],"type":"UL"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Внешний вид кода"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Отступы:

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"aab3aa70-f54c-5a62-9680-a841645c5046","width":717,"height":325,"size":36010,"type":"png","color":"e3e3df","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Вот правильные отступы,это 4 пробела.Не советую совмещать tab и пробелы.Из-за этого могут быть ошибки.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"def calculate_total_price(\n item_name, quantity,\n price_per_unit, discount_percentage\n):\n subtotal = quantity * price_per_unit\n discount = subtotal * discount_percentage / 100\n total_price = subtotal - discount\n return total_price\n\n\nitem = \"Example Item\"\nquantity = 10\nprice = 15.99\ndiscount = 20\n\ntotal = calculate_total_price(\n item, quantity,\n price, discount\n)\n\nprint(\"Total price:\", total)","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

А вот неправильные отступы:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"# Аргументы на первой линии запрещены, если не используется вертикальное выравнивание\nfoo = long_function_name(var_one, var_two,\n var_three, var_four)\n\n# Больше отступов требуется, для отличения его от остальных\ndef long_function_name(\n var_one, var_two, var_three,\n var_four):\n print(var_one)","lang":""}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Импорты:"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Каждый импорт, как правило, должен быть на отдельной строке.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Правильно:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import os\nimport sys","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Неправильно:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import sys, os","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Но есть одно исключение:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from subprocess import Popen, PIPE","lang":""}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Стили названий:"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

У всех языков программирования есть данные и их надо называть чтобы работать с ними.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Вот неправильное название:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"a=1\nb=2\nc=a+b\nprint(c)","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Потому что мы почти всегда после названия мы работаем с ними,а потом когда показываете или потом читаете .Что значит мы должны называть их нормально.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Это конец!Я не все затронул,но вы можете почитать английскую версию или русскую версию.

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":3,"reposts":0,"views":777,"hits":882,"reads":null,"online":0},"dateFavorite":0,"hitsCount":882,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/700494-bibliya-dlya-python-programmistov","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[{"id":1,"count":3}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":695530,"customUri":null,"subsiteId":1510590,"title":"Асинхронное программирование на asyncio","date":1684206773,"dateModified":1684206773,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"

Ассинхроность дает нам плюс к многозадачности.Даваете посмотрим два примера кода:

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Без ассинхроности

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import time\n\ndef start():\n print(1)\n\ndef time():\n time.sleep(20)\n print(2)\n\ndef end():\n print(3)\n\ndef main():\n start_time = time.time()\n start()\n time()\n end()\n end_time = time.time()\n elapsed_time = end_time - start_time\n print(f\"Elapsed time: {elapsed_time} seconds\")\n\nif __name__ == \"__main__\":\n main()","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

И с ассинхроностью:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import asyncio\nimport time\n\nasync def start():\n print(1)\n\nasync def time():\n await asyncio.sleep(20)\n print(2)\n\ndef end():\n print(3)\n\nasync def main():\n start_time = time.time()\n await start()\n await time()\n end()\n end_time = time.time()\n elapsed_time = end_time - start_time\n print(f\"Elapsed time: {elapsed_time} seconds\")\n\nif __name__ == \"__main__\":\n asyncio.run(main())","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Здесь скорость двух примеров относительна близка,но в больших проектах лучше использовать ассинхроность.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь переидем к обьяснению:

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Асинхронность (асинхронное программирование) в программировании означает выполнение задач без явного ожидания завершения предыдущих задач. Вместо того, чтобы блокировать выполнение программы при ожидании завершения операции, асинхронный код позволяет программе продолжать работу и выполнять другие задачи во время ожидания.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Пример кода:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import asyncio\n\nasync def task1():\n print(\"Task 1 started\")\n await asyncio.sleep(2) # Имитируем длительную операцию\n print(\"Task 1 completed\")\n\nasync def task2():\n print(\"Task 2 started\")\n await asyncio.sleep(1) # Имитируем длительную операцию\n print(\"Task 2 completed\")\n\nasync def main():\n print(\"Main started\")\n await asyncio.gather(task1(), task2()) # Запускаем задачи параллельно\n print(\"Main completed\")\n\nasyncio.run(main())","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

В этом примере мы используем модуль asyncio для создания асинхронной программы. Есть две асинхронные задачи task1() и task2(), которые имитируют длительные операции, используя await asyncio.sleep() для приостановки выполнения на определенное время.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Функция main() является точкой входа в программу и запускает задачи task1() и task2() параллельно с помощью asyncio.gather(). Важно отметить, что когда одна из задач ожидает (await), другая задача может продолжить выполнение, не блокируя программу.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Выполнение кода показывает, что \"Task 1 started\" и \"Task 2 started\" выводятся одновременно, а затем после задержки \"Task 2 completed\" выводится раньше, чем \"Task 1 completed\". Это демонстрирует параллельное выполнение асинхронных задач.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Асинхронность позволяет эффективно использовать ресурсы и повышает отзывчивость программы, особенно когда есть операции ввода-вывода (I/O), такие как чтение из сети или запись на диск. Вместо блокировки выполнения при ожидании I/O операций, асинхронный код может переключаться между задачами, позволяя другим задачам продолжать выполнение.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Обратите внимание, что для запуска асинхронной программы мы используем asyncio.run(main()), которая создает цикл событий asyncio и запускает функцию main() в этом цикле событий.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Спасибо за просмотр статьй.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

P.S Подпишись

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":1,"favorites":0,"reposts":0,"views":1318,"hits":2805,"reads":null,"online":0},"dateFavorite":0,"hitsCount":2805,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/695530-asinhronnoe-programmirovanie-na-asyncio","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[{"id":1,"count":3}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":694067,"customUri":null,"subsiteId":1510590,"title":"Улучшеный курс по созданию телеграм ботов","date":1684078122,"dateModified":1684078122,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"

Хай,привет я думаю ты задумавался сделать телеграм бота,ну да потому что ты кликнул на эту статью.Пошли кодить.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Я буду использовать Telebot(PyTelegramBotApi) очень легкая библиотека:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"pip install pyTelegramBotAPI","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь возмем Api ключ в телеграмме.Заходим в поиск и вбиваем @botFather(примерно так будет выглядить -->)

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"9b99f766-0ffb-5642-90c3-f1aac52d521c","width":1450,"height":912,"size":369061,"type":"png","color":"9bbe8e","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Берем в буфер ключ и идем в ide или где вы кодите:

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

#Кодинг

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import telebot\ntoken='6250404026:AAFC4KiaDmFcCw51gpToPeueN-Ug64HHzyk'\nbot=telebot.TeleBot(token)\n@bot.message_handler(commands=['start'])\ndef start(message):\n bot.send_message(message.chat.id,'Привет')\n\nbot.polling()","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Этот бот пишет привет.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

#Обьяснение

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

После импорта , мы создали token и token передается в аргумент bot .После этого мы будем работать только с bot ,вот пример \"@bot.message_handler(commands=['start'])\"-это обработчик всех сообщений,но включается внизу код только если напишешь /start.Comands не одна настройка хэндлера.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

#Кодинг

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import telebot\ntoken='6250404026:AAFC4KiaDmFcCw51gpToPeueN-Ug64HHzyk'\nbot=telebot.TeleBot(token)\n@bot.message_handler(content_types=['text'])\ndef start(message):\n bot.send_message(message.chat.id,'Привет')\n\nbot.polling()","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь бот отвечает на все сообщения типа:текст.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

#Обьяснение

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

\"content_types=['text']\" это настройка на то чтобы бот писал привет,если пользователь будет писать сообщение,но на фото,видео и аудио не будет отвечать.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

#Кодинг

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь добавим кнопки:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import telebot\nfrom telebot.types import InlineKeyboardButton,InlineKeyboardMarkup\ntoken='6250404026:AAFC4KiaDmFcCw51gpToPeueN-Ug64HHzyk'\nbot=telebot.TeleBot(token)\n@bot.message_handler(commands=['start'])\ndef start(message):\n markup=InlineKeyboardMarkup(row_width=2)\n random=InlineKeyboardButton('Рандомное число',callback_data='random')\n comands=InlineKeyboardButton(\"Команды\",callback_data='comands')\n markup.add(random,comands)\n bot.send_message(message.chat.id,'Выбери опцию.',reply_markup=markup)\n\nbot.polling()","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

#Обьяснение

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

types имеют:

"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["InlineKeyboardButton","InlineKeyboardMarkup
","ReplyKeyboardMarkup
","KeyboardButton"],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Я использовал InlineKeyboardButton:

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"4ff2e22f-ac88-5a45-a096-c6c115cebfc9","width":1428,"height":194,"size":199074,"type":"png","color":"a5c384","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Markup это наша клавиатура содержит кнопки,у меня есть только две кнопки \"Рандомное число\",\"Команды\".Их мы добавляем кнопки с помощью 'markup.add'.Теперь мы добавим reply_markup чтобы увидеть клавиатуру.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

#Кодинг

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"@bot.callback_query_handler(func=lambda call: True)\ndef handle_button_press(call):\n if call.data == 'random':\n # Обработка нажатия кнопки \"Рандомное число\"\n random_number = random.randint(1, 100)\n bot.send_message(call.message.chat.id, f'Случайное число: {random_number}')\n elif call.data == 'commands':\n # Обработка нажатия кнопки \"Команды\"\n bot.send_message(call.message.chat.id, 'Список доступных команд:\\n/start - Начало бота.')","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

#Обьяснение

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Кнопки есть callback_data и это как id кнопки когда вы нажимаете на кнопку проверяются все callbackи на то что пользователь нажал на кнопку.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

На этом я заканчиваю,если хотите продолжение напиши в коментарий и подпишись.Я же стараюсь.

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":3,"reposts":0,"views":537,"hits":1017,"reads":null,"online":0},"dateFavorite":0,"hitsCount":1017,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/694067-uluchshenyi-kurs-po-sozdaniyu-telegram-botov","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[{"id":1,"count":1}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":694006,"customUri":null,"subsiteId":1510590,"title":"Ваш месенджер на python","date":1684068760,"dateModified":1684068760,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"

Хай,сегодня мы будем делать свой менджер на pywebio. Погнали писать код.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"pip install asyncio\npip install pywebio","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Импортируем:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from pywebio import start_server\nfrom pywebio.input import *\nfrom pywebio.output import *\nfrom pywebio.session import run_async, run_js\nimport asyncio\nchat_msgs = [] # Сохраняет сообщения чата\nonline_users = set() # Список пользователей онлайн\nMAX_MESSAGES_COUNT = 100 # Максимальное количество сообщений в чате","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Далее создаем асинхронную функцию main(), которая будет отвечать за основную логику чата. Внутри функции мы создаем интерфейс чата с помощью функций PyWebIO:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"async def main():\n global chat_msgs\n\n put_markdown(\"## Это чат\")\n\n msg_box = output()\n put_scrollable(msg_box, height=300, keep_bottom=True)\n\n nickname = await input(\"Войти в чат\", required=True, placeholder=\"Ваше имя\", validate=lambda\n n: \"Этот никнейм уже используется\" if n in online_users or n == '' else None)\n online_users.add(nickname)\n\n chat_msgs.append(('', f\"`{nickname}` присоединился к чату!\"))\n msg_box.append(put_markdown(f\"`{nickname}` присоединился к чату!\"))\n\n refresh_task = run_async(refresh_msg(nickname, msg_box))\n\n while True:\n data = await input_group(\"Новое сообщение\", [\n input(placeholder=\"Текст сообщения\", name=\"msg\"),\n actions(name=\"cmd\", buttons=[\"Отправить\", {'label': \"Покинуть чат\", 'type': 'cancel'}])\n ], validate=lambda m: ('msg', \"Введите ваше сообщение!\") if m[\"cmd\"] == \"Отправить\" and not m[\"msg\"] else None)\n\n if data is None:\n break\n\n msg_box.append(put_markdown(f\"`{nickname}`: {data['msg']}\"))\n chat_msgs.append((nickname, data['msg']))\n\n # выход из чата\n refresh_task.close()\n\n online_users.remove(nickname)\n toast(\"Вы покинули чат!\")\n msg_box.append(put_markdown(f\"Пользователь `{nickname}` покинул чат!\"))\n chat_msgs.append(('', f\"Пользователь `{nickname}` покинул чат!\"))\n put_buttons(['Вернуться в чат'], onclick=lambda btn: run_js('window.location.reload()'))","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Функция refresh_msg(nickname, msg_box) является асинхронной и предназначена для обновления сообщений в чате. Давайте рассмотрим её поэтапно:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"async def refresh_msg(nickname, msg_box):\n global chat_msgs\n last_idx = len(chat_msgs)\n\n while True:\n await asyncio.sleep(1)\n\n for m in chat_msgs[last_idx:]:\n if m[0] != nickname:\n msg_box.append(put_markdown(f\"`{m[0]}`: {m[1]}\"))","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Функция выполняется в бесконечном цикле с использованием while True. Внутри цикла мы вызываем await asyncio.sleep(1), чтобы задержать выполнение функции на 1 секунду перед каждой итерацией. Это позволяет осуществить плавное обновление сообщений в чате с задержкой в 1 секунду между обновлениями.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Затем мы проходим по сообщениям chat_msgs начиная с индекса last_idx. Мы проверяем, что отправитель сообщения (m[0]) не совпадает с текущим пользователем (nickname), и если это так, добавляем сообщение в msg_box для отображения в чате.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"# удаление устаревших сообщений\n if len(chat_msgs) > MAX_MESSAGES_COUNT:\n chat_msgs = chat_msgs[len(chat_msgs) // 2:]\n\n last_idx = len(chat_msgs)","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

В конце каждой итерации обновляем last_idx для следующей итерации цикла. Мы также проверяем, если количество сообщений chat_msgs превышает MAX_MESSAGES_COUNT, то удаляем старые сообщения, оставляя только последнюю половину сообщений.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

И наконец, в самом низу кода, мы вызываем функцию start_server(main, debug=True, port=8080, cdn=False), чтобы запустить веб-сервер и инициализировать чат с помощью функции main(). Веб-сервер будет запущен на порту 8080 и будет использовать локальные ресурсы, а отладочный режим (debug=True) позволяет выводить отладочную информацию при необходимости.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"if __name__ == \"__main__\":\n start_server(main, debug=True, port=8080, cdn=False)","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Ну вот:

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"3539965c-b922-5955-9026-f07d72563209","width":1870,"height":902,"size":18103,"type":"png","color":"ebeff2","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Спасибо за просмотр статьй.

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":4,"favorites":2,"reposts":0,"views":562,"hits":5218,"reads":null,"online":0},"dateFavorite":0,"hitsCount":5218,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/694006-vash-mesendzher-na-python","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[{"id":1,"count":1}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":688584,"customUri":null,"subsiteId":1510590,"title":"Мой первый сайт","date":1683553262,"dateModified":1683553262,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"

Сражу скажу я знаю что в коммах будет срач,но прошу помогите с освоением.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Я буду использовать Flask.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Начнем с начала:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"pip install Flask","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь сделаем минимальную аппликацию.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from flask import Flask\n#импорты\napp = Flask(__name__)\n#создание перменной app с которой мы будем работать после\n@app.route(\"/\")\ndef hello_world():\n return \"

Hello, World!

\"","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

В этой аппликиций сейчас только показывается \"Hello world\".Теперь добавим рендер html.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from flask import Flask, render_template\n\napp = Flask(__name__)\n\n@app.route('/')\ndef hello():\n return render_template('main.html')\nif __name__ == '__main__':\n app.run()","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь напишем main.html

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"\n\n\n Portfolio\n \n\n\n
\n

My Portfolio

\n
\n
\n

About Me

\n

\n Hi, I'm John Doe. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vitae lectus ac metus\n pulvinar elementum a sed lacus. Sed sed metus at urna porta ultricies vel vitae velit. Aliquam convallis,\n purus ac commodo commodo, ipsum erat congue eros, vitae efficitur libero urna nec mi. Integer vel luctus\n velit, a pellentesque justo.\n

\n
\n
\n
\n

Парсер hh.ru + веб приложение

\n \"Project\n
\n
\n

Голос в текст

\n \"Project\n
\n
\n

URL уменьшитель

\n \"Project\n
\n
\n\n","lang":""}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"Вот фото сайта.","image":{"type":"image","data":{"uuid":"3d8783ba-59a7-5206-9a4c-468491f15bdb","width":1874,"height":864,"size":93781,"type":"png","color":"332c47","hash":"","external_service":[]}}}]}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from flask import Flask, render_template\n\napp = Flask(__name__)\n\n@app.route('/')\ndef hello():\n return render_template('main.html')\n@app.route('/socnet')\ndef login():\n return render_template('social network.html')\nif __name__ == '__main__':\n app.run()","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь добавил социальнные сети.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"\n\n\n \n \n \n Социальные сети\n\n\n
\n

Социальные сети

\n \n
\n\n\n","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Я знаю что это не самый чистый и лучший код,если можете помогите улучшить мой знания в html,css и js.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Пока,а забыл подпишись на меня.

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":1,"favorites":0,"reposts":0,"views":605,"hits":148,"reads":null,"online":0},"dateFavorite":0,"hitsCount":148,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/688584-moi-pervyi-sait","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":688002,"customUri":null,"subsiteId":1510590,"title":"Парсер hh + веб-приложение на Python","date":1683469621,"dateModified":1683469621,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"

Сегодня покажу api hh и pywebio.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Импорты:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"pip install pywebio\npip install requests","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Вот ссылка на api.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Код парсера:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import requests\n\ndef get_vacancies(keyword):\n url = \"https://api.hh.ru/vacancies\"\n params = {\n \"text\": keyword,\n \"area\": 1, # Specify the desired area ID (1 is Moscow)\n \"per_page\": 10, # Number of vacancies per page\n }\n headers = {\n \"User-Agent\": \"Your User Agent\", # Replace with your User-Agent header\n }\n\n response = requests.get(url, params=params, headers=headers)\n\n if response.status_code == 200:\n data = response.json()\n vacancies = data.get(\"items\", [])\n for vacancy in vacancies:\n # Extract relevant information from the vacancy object\n vacancy_id = vacancy.get(\"id\")\n vacancy_title = vacancy.get(\"name\")\n vacancy_url = vacancy.get(\"alternate_url\")\n company_name = vacancy.get(\"employer\", {}).get(\"name\")\n print(f\"ID: {vacancy_id}\\nTitle: {vacancy_title}\\nCompany: {company_name}\\nURL: {vacancy_url}\\n\")\n else:\n print(f\"Request failed with status code: {response.status_code}\")\n\n\n# Example usage\nget_vacancies(\"python developer\")","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Есть такая легкая библиотека PYWEBIO,которыя делает из приложений в терминале в веб приложение.Вот теперь мы добавим код с pywebio:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import requests\nfrom pywebio import input, output, start_server\n\n\ndef get_vacancies(keyword):\n url = \"https://api.hh.ru/vacancies\"\n params = {\n \"text\": keyword,\n \"area\": 1, # Specify the desired area ID (1 is Moscow)\n \"per_page\": 10, # Number of vacancies per page\n }\n headers = {\n \"User-Agent\": \"Your User Agent\", # Replace with your User-Agent header\n }\n\n response = requests.get(url, params=params, headers=headers)\n\n if response.status_code == 200:\n data = response.json()\n vacancies = data.get(\"items\", [])\n num_vacancies = len(vacancies)\n\n if num_vacancies > 0:\n for i, vacancy in enumerate(vacancies):\n # Extract relevant information from the vacancy object\n vacancy_id = vacancy.get(\"id\")\n vacancy_title = vacancy.get(\"name\")\n vacancy_url = vacancy.get(\"alternate_url\")\n company_name = vacancy.get(\"employer\", {}).get(\"name\")\n output.put_text(f\"ID: {vacancy_id}\")\n output.put_text(f\"Title: {vacancy_title}\")\n output.put_text(f\"Company: {company_name}\")\n output.put_text(f\"URL: {vacancy_url}\")\n output.put_text(\"\") # Add an empty line for separation\n\n if i < num_vacancies - 1:\n output.put_text(\"---------\") # Add separation line\n else:\n output.put_text(\"No vacancies found.\")\n else:\n output.put_text(f\"Request failed with status code: {response.status_code}\")\n\n\ndef search_vacancies():\n keyword = input.input(\"Enter a keyword to search for vacancies:\", type=input.TEXT)\n output.clear()\n output.put_text(\"Searching for vacancies...\")\n get_vacancies(keyword)\n\n\nif __name__ == '__main__':\n start_server(search_vacancies, port=8080)","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь мы имеем классный визуал вот фото:

"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"0daf570c-2e28-5cbc-a781-026de839df32","width":1860,"height":883,"size":5793,"type":"png","color":"eff0f0","hash":"","external_service":[]}}}]}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"разрешение вышло из чата","image":{"type":"image","data":{"uuid":"7585081b-4dd6-51a4-a3a6-84ca233c1d66","width":1906,"height":871,"size":18310,"type":"png","color":"374e82","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Ну вот и все.Конец!

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Подпишись:

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

YouTube

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Телега

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Инстаграм

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":4,"favorites":6,"reposts":0,"views":755,"hits":10018,"reads":null,"online":0},"dateFavorite":0,"hitsCount":10018,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/688002-parser-hh-veb-prilozhenie-na-python","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[{"id":1,"count":3}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":687695,"customUri":null,"subsiteId":1510590,"title":"Парсер vc.ru","date":1683428428,"dateModified":1683428428,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"

Сегодня я вам покажу парсер статьи на vc.ru.

"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Буду использовать beautifulsoup4,requests.

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"pip install beautifulsoup4\npip install requests","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Теперь берем url статьи , я взял url своей статьи.Пишем легкий код:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from bs4 import BeautifulSoup\nimport requests\n\nurl = 'https://vc.ru/u/1510590-python-idea/686866-oop-v-python'#здесь может быть ваш url\nresponse = requests.get(url)#создание запроса к ссылке\nprint(response.status_code)#если в консоли вышло число 200 идем дальше","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Добавляем bs4

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"soup = BeautifulSoup(response.text, 'html.parser')\ntitle = soup.find('h1', class_='content-title')\ncodes = soup.find_all('figure')\ntexts = soup.find_all('div', class_='l-island-a')","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

И последнее вывод данных парсера:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"print(title.get_text(strip=True))\nfor text in texts:\n print(t.get_text(strip=True))\nfor code in codes:\n print(c.get_text(strip=True))","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Весь код:

"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"from bs4 import BeautifulSoup\nimport requests\n\nurl = 'https://vc.ru/u/1510590-python-idea/686866-oop-v-python'\nresponse = requests.get(url)\nprint(response.status_code)\n\nsoup = BeautifulSoup(response.text, 'html.parser')\ntitle = soup.find('h1', class_='content-title')\ncodes = soup.find_all('figure')\ntexts = soup.find_all('div', class_='l-island-a')\nprint(title.get_text(strip=True))\nfor text in texts:\n print(t.get_text(strip=True))\nfor code in codes:\n print(c.get_text(strip=True))","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"

Ну и все конец.

"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":5,"favorites":5,"reposts":0,"views":739,"hits":632,"reads":null,"online":0},"dateFavorite":0,"hitsCount":632,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1510590/687695-parser-vcru","author":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1510590,"name":"Python Idea","nickname":null,"description":"Раскажу вам о всех чертогах постижения IT и покажу что программистом могут стать все, если захотят и подпишутся на меня,конечно.","uri":"","avatar":{"type":"image","data":{"uuid":"2f87cc08-8d35-5587-947b-9b51331b9a0b","width":2560,"height":1440,"size":1257538,"type":"png","color":"1c1c1c","hash":"","external_service":[]}},"cover":{"cover":{"type":"image","data":{"uuid":"d61baea8-5da2-5fb5-8aa8-b95dde4fbbb3","width":1920,"height":1080,"size":913739,"type":"png","color":"14120f","hash":"","external_service":[]}},"cover_y":26},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3943935,"userId":1510590,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3943935"}],"lastModificationDate":1764919476,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[{"id":1,"count":2}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}}],"cursor":"PuR2GsZKFTvhhGxZAojr7drVS6IzQAa09I6wtbz/zlbeaPDONLWmxElZ6m5GnW4=","isAnonymized":true}};