Веб скрейпинг на Python полное руководство для новичков

Чтобы начать веб скрейпинг на Python, установите библиотеку BeautifulSoup и requests. Эти инструменты помогут вам быстро извлекать данные с веб-страниц. Для установки выполните команду pip install beautifulsoup4 requests. Убедитесь, что у вас установлена последняя версия Python, чтобы избежать проблем с совместимостью.

После установки библиотек создайте простой скрипт для получения HTML-кода страницы. Используйте requests.get(), чтобы отправить запрос, и передайте результат в BeautifulSoup для анализа. Например, чтобы извлечь заголовок страницы, добавьте код: soup.title.string. Это даст вам текстовое содержимое тега .</p> <p>Для работы с динамическими сайтами, где данные загружаются через JavaScript, подключите <strong>Selenium</strong>. Установите его командой <em>pip install selenium</em> и настройте драйвер для вашего браузера. Selenium имитирует действия пользователя, что позволяет извлекать данные, которые недоступны через простые HTTP-запросы.</p> <p>Не забывайте о правилах вежливого скрейпинга. Добавляйте задержки между запросами с помощью <strong>time.sleep()</strong>, чтобы не перегружать серверы. Проверяйте файл <em>robots.txt</em> сайта, чтобы убедиться, что ваш скрейпинг не нарушает политику ресурса. Это поможет избежать блокировки и сохранить доступ к данным.</p> <p>Сохраняйте извлеченные данные в удобном формате, например, в CSV или JSON. Используйте библиотеку <strong>pandas</strong> для работы с таблицами или <strong>json</strong> для структурированных данных. Это упростит дальнейший анализ и обработку информации. Веб скрейпинг – мощный инструмент, который открывает доступ к огромному количеству данных, если использовать его правильно.</p> <h2>Основы веб скрейпинга на Python</h2> <p>Для начала установите библиотеку <code>requests</code>, чтобы отправлять HTTP-запросы, и <code>BeautifulSoup</code> для парсинга HTML. Выполните команду <code>pip install requests beautifulsoup4</code> в терминале.</p> <p>Используйте <code>requests.get()</code> для загрузки веб-страницы. Например, <code>response = requests.get('https://example.com')</code>. Проверьте статус ответа с помощью <code>response.status_code</code> – код 200 означает успешный запрос.</p> <p>Создайте объект <code>BeautifulSoup</code>, передав HTML-код страницы и парсер. Например, <code>soup = BeautifulSoup(response.text, 'html.parser')</code>. Это позволит извлекать данные с помощью методов <code>find()</code> и <code>find_all()</code>.</p> <p>Для поиска элементов по тегам используйте <code>soup.find('tag')</code> или <code>soup.find_all('tag')</code>. Например, <code>soup.find_all('a')</code> вернет все ссылки на странице. Чтобы извлечь текст, добавьте <code>.text</code>, а для атрибутов – <code>['attribute']</code>.</p> <p>Работайте с динамическими сайтами через <code>selenium</code>. Установите его командой <code>pip install selenium</code> и настройте драйвер браузера. Используйте <code>WebDriver</code> для взаимодействия с элементами страницы, например, <code>driver.find_element(By.TAG_NAME, 'div')</code>.</p> <p>Сохраняйте извлеченные данные в файлы. Для CSV используйте модуль <code>csv</code>, а для JSON – <code>json</code>. Например, <code>json.dump(data, open('data.json', 'w'))</code> сохранит данные в формате JSON.</p> <p>Соблюдайте правила веб-сайтов: проверяйте файл <code>robots.txt</code> и не отправляйте слишком частые запросы. Добавьте задержку с помощью <code>time.sleep()</code>, чтобы избежать блокировки.</p> <h3>Что такое веб скрейпинг и для чего он нужен?</h3> <p>Скрипты для веб скрейпинга используют библиотеки Python, такие как BeautifulSoup, Scrapy или Selenium. Эти инструменты позволяют парсить HTML-код страниц, находить нужные элементы и сохранять их в удобном формате, например, в CSV, JSON или базе данных.</p> <p>Веб скрейпинг применяется в разных сферах. Например, маркетологи используют его для анализа цен конкурентов, исследователи – для сбора данных для анализа, а разработчики – для автоматизации тестирования веб-приложений. Он также помогает в создании датасетов для машинного обучения и анализа трендов.</p> <p>При работе с веб скрейпингом важно учитывать правила сайтов. Некоторые ресурсы запрещают автоматизированный сбор данных, поэтому перед началом работы проверяйте их политику использования. Для уважительного подхода можно добавлять задержки между запросами и избегать перегрузки серверов.</p> <p>С помощью веб скрейпинга можно сэкономить время и получить доступ к информации, которая иначе была бы недоступна. Это мощный инструмент для работы с данными, который открывает новые возможности для анализа и автоматизации.</p> <h3>Необходимые инструменты для начала работы</h3> <p>Установите Python версии 3.7 или выше, если он еще не установлен. Это основа для всех дальнейших шагов. Скачайте его с официального сайта python.org и следуйте инструкциям установки для вашей операционной системы.</p> <p>Для работы с веб-страницами используйте библиотеку Requests. Она позволяет отправлять HTTP-запросы и получать данные. Установите её через pip командой <code>pip install requests</code>. Это простой и надежный способ загружать HTML-код страниц.</p> <p>Чтобы анализировать HTML, подключите библиотеку BeautifulSoup. Она упрощает извлечение данных из разметки. Установите её командой <code>pip install beautifulsoup4</code>. Для работы с CSS-селекторами добавьте lxml или html.parser в качестве парсера.</p> <p>Если сайт использует JavaScript для динамической загрузки контента, потребуется Selenium. Установите его через <code>pip install selenium</code> и скачайте драйвер для вашего браузера, например, ChromeDriver для Google Chrome. Selenium имитирует действия пользователя, что позволяет получать данные с таких страниц.</p> <p>Для хранения и обработки данных используйте Pandas. Установите её командой <code>pip install pandas</code>. Она удобна для работы с таблицами и экспорта данных в CSV или Excel.</p> <p>Настройте среду разработки. PyCharm, VS Code или Jupyter Notebook подойдут для написания и тестирования кода. Выберите то, что вам удобнее, и начните с простых скриптов.</p> <p>Проверьте свои навыки на практике. Начните с небольших проектов, например, извлечения заголовков новостей или цен на товары. Это поможет понять, как работают инструменты, и подготовит вас к более сложным задачам.</p> <h3>Установка и настройка библиотек для веб скрейпинга на Python</h3> <p>Для начала установите библиотеку <code>requests</code>, которая позволяет отправлять HTTP-запросы. Используйте команду <code>pip install requests</code>. Она проста в использовании и подходит для получения HTML-кода страниц.</p> <p>Чтобы работать с HTML-документами, установите <code>BeautifulSoup</code>. Введите <code>pip install beautifulsoup4</code>. Эта библиотека помогает извлекать данные из HTML-структуры с помощью методов поиска по тегам и атрибутам.</p> <p>Для работы с динамическими сайтами, где контент загружается через JavaScript, потребуется <code>Selenium</code>. Установите его командой <code>pip install selenium</code>. Также скачайте драйвер для вашего браузера, например, <code>ChromeDriver</code> для Google Chrome.</p> <p>Если вам нужно анализировать данные или сохранять их в структурированном виде, добавьте <code>pandas</code>. Установите его через <code>pip install pandas</code>. Эта библиотека упрощает работу с таблицами и экспорт данных в CSV или Excel.</p> <p>Для обработки больших объемов данных и автоматизации задач используйте <code>Scrapy</code>. Установите его командой <code>pip install scrapy</code>. Это мощный фреймворк, который позволяет создавать сложные скрейперы с поддержкой асинхронных запросов.</p> <p>Пример установки всех необходимых библиотек:</p> <table> <tr> <th>Библиотека</th> <th>Команда установки</th> </tr> <tr> <td>requests</td> <td><code>pip install requests</code></td> </tr> <tr> <td>BeautifulSoup</td> <td><code>pip install beautifulsoup4</code></td> </tr> <tr> <td>Selenium</td> <td><code>pip install selenium</code></td> </tr> <tr> <td>pandas</td> <td><code>pip install pandas</code></td> </tr> <tr> <td>Scrapy</td> <td><code>pip install scrapy</code></td> </tr> </table> <p>После установки библиотек проверьте их работоспособность, выполнив простой импорт в Python. Например, <code>import requests</code> или <code>from bs4 import BeautifulSoup</code>. Если ошибок нет, вы готовы к работе.</p> <p>Настройте среду разработки, чтобы избежать конфликтов версий. Используйте виртуальное окружение. Создайте его командой <code>python -m venv myenv</code>, активируйте через <code>myenvScriptsactivate</code> (Windows) или <code>source myenv/bin/activate</code> (macOS/Linux), затем установите библиотеки.</p> <h2>Практические шаги для выполнения веб скрейпинга</h2> <p>Установите библиотеку BeautifulSoup и requests, используя команду <code>pip install beautifulsoup4 requests</code>. Эти инструменты помогут извлекать данные и работать с HTML-структурой страницы.</p> <p>Создайте HTTP-запрос к нужному сайту с помощью <code>requests.get(url)</code>. Проверьте статус ответа, чтобы убедиться, что страница загружена успешно (код 200).</p> <p>Спарсите HTML-код страницы, передав его в BeautifulSoup. Используйте <code>BeautifulSoup(response.text, 'html.parser')</code> для создания объекта, с которым будете работать.</p> <p>Определите элементы, которые хотите извлечь. Найдите их с помощью методов <code>find()</code> или <code>find_all()</code>, указав теги, классы или атрибуты. Например, <code>soup.find_all('div', class_='product')</code> извлечет все блоки с классом «product».</p> <p>Извлеките нужные данные из элементов. Используйте <code>.text</code> для получения текста или <code>['атрибут']</code> для доступа к атрибутам, таким как ссылки или изображения.</p> <p>Сохраните данные в удобном формате. Запишите их в CSV-файл с помощью модуля <code>csv</code> или в JSON с использованием <code>json.dump()</code>.</p> <p>Обрабатывайте ошибки и ограничения. Добавьте проверки на случай, если элемент не найден, и используйте <code>time.sleep()</code>, чтобы избежать блокировки IP при частых запросах.</p> <p>Тестируйте скрипт на нескольких страницах, чтобы убедиться в его стабильности. Вносите коррективы, если структура сайта меняется или данные извлекаются некорректно.</p> <h3>Построение запроса к веб-странице: использование библиотеки requests</h3> <p>Установите библиотеку <code>requests</code> с помощью команды <code>pip install requests</code>, если она еще не установлена. Это позволит отправлять HTTP-запросы к веб-страницам и получать их содержимое.</p> <p>Для отправки GET-запроса используйте метод <code>requests.get()</code>. Например:</p> <pre><code>import requests response = requests.get('https://example.com') </code></pre> <p>Проверьте статус ответа, чтобы убедиться, что запрос выполнен успешно. Код 200 означает, что всё в порядке:</p> <pre><code>if response.status_code == 200: print('Запрос успешен') </code></pre> <p>Получите содержимое страницы с помощью атрибута <code>response.text</code>. Это вернет HTML-код страницы:</p> <pre><code>html_content = response.text print(html_content) </code></pre> <p>Если вам нужно работать с JSON-данными, используйте метод <code>response.json()</code>. Это полезно при взаимодействии с API:</p> <pre><code>data = response.json() print(data) </code></pre> <p>Добавьте параметры к запросу, передав их в аргумент <code>params</code>. Например:</p> <pre><code>params = {'q': 'python', 'page': 2} response = requests.get('https://example.com/search', params=params) </code></pre> <p>Если требуется отправить POST-запрос, используйте метод <code>requests.post()</code> и передайте данные в аргументе <code>data</code>:</p> <pre><code>data = {'username': 'user', 'password': 'pass'} response = requests.post('https://example.com/login', data=data) </code></pre> <p>Добавьте заголовки к запросу, чтобы имитировать поведение браузера или передать дополнительные данные. Используйте аргумент <code>headers</code>:</p> <pre><code>headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get('https://example.com', headers=headers) </code></pre> <p>Обрабатывайте ошибки с помощью блока <code>try-except</code>, чтобы избежать сбоев при проблемах с подключением:</p> <pre><code>try: response = requests.get('https://example.com', timeout=5) response.raise_for_status() except requests.exceptions.RequestException as e: print(f'Ошибка: {e}') </code></pre> <p>Сохраните полученные данные в файл, если это необходимо. Например, для сохранения HTML-страницы:</p> <pre><code>with open('page.html', 'w', encoding='utf-8') as file: file.write(response.text) </code></pre> <p>Используйте сессии для управления cookies и сохранения состояния между запросами. Это особенно полезно для авторизации:</p> <pre><code>session = requests.Session() session.get('https://example.com/login', params={'user': 'test'}) response = session.get('https://example.com/dashboard') </code></pre> <h3>Парсинг HTML-страниц с помощью BeautifulSoup</h3> <p>Установите библиотеку BeautifulSoup через pip, выполнив команду <code>pip install beautifulsoup4</code>. Для работы также потребуется библиотека requests, которую можно установить аналогично: <code>pip install requests</code>.</p> <p>Сначала загрузите HTML-страницу с помощью requests. Например, чтобы получить содержимое страницы, используйте следующий код:</p> <pre><code>import requests from bs4 import BeautifulSoup url = 'https://example.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') </code></pre> <p>После загрузки страницы в объект soup, вы можете извлекать данные. Например, чтобы получить заголовок страницы, используйте метод <code>soup.title</code>. Для извлечения всех ссылок на странице, примените <code>soup.find_all('a')</code>.</p> <p>Для поиска элементов по классу или идентификатору, используйте атрибуты <code>class_</code> и <code>id</code>. Например, чтобы найти все элементы с классом «content», напишите <code>soup.find_all(class_='content')</code>.</p> <p>Если нужно извлечь текст из элемента, используйте метод <code>.text</code>. Например, <code>soup.find('h1').text</code> вернет текст заголовка первого уровня.</p> <p>Для работы с атрибутами элементов, например, ссылками, обращайтесь к атрибуту <code>['href']</code>. Пример: <code>soup.find('a')['href']</code> вернет URL первой ссылки на странице.</p> <p>Помните, что BeautifulSoup поддерживает разные парсеры. По умолчанию используется ‘html.parser’, но можно выбрать ‘lxml’ или ‘html5lib’, если требуется более высокая производительность или точность.</p> <p>Если вы столкнулись с проблемами при парсинге, проверьте структуру HTML-кода страницы через инструменты разработчика в браузере. Это поможет точнее определить нужные элементы.</p> <h3>Сохранение собранных данных в файлы: CSV и JSON</h3> <p>Для сохранения данных в формате CSV используйте модуль <strong>csv</strong>. Создайте файл с помощью функции <em>open</em>, а затем передайте его в объект <em>csv.writer</em>. Например:</p> <pre><code>import csv data = [['Имя', 'Возраст'], ['Алексей', 25], ['Мария', 30]] with open('data.csv', 'w', newline='', encoding='utf-8') as file: writer = csv.writer(file) writer.writerows(data) </code></pre> <p>Этот код создаст файл <em>data.csv</em> с таблицей, где каждая строка представляет отдельную запись. Убедитесь, что указали параметр <em>newline=»</em>, чтобы избежать лишних пустых строк.</p> <p>Если данные структурированы как словарь, используйте <em>csv.DictWriter</em>. Укажите заголовки столбцов в параметре <em>fieldnames</em>:</p> <pre><code>data = [{'Имя': 'Алексей', 'Возраст': 25}, {'Имя': 'Мария', 'Возраст': 30}] with open('data.csv', 'w', newline='', encoding='utf-8') as file: writer = csv.DictWriter(file, fieldnames=['Имя', 'Возраст']) writer.writeheader() writer.writerows(data) </code></pre> <p>Для сохранения данных в формате JSON воспользуйтесь модулем <strong>json</strong>. Используйте функцию <em>json.dump</em> для записи данных в файл:</p> <pre><code>import json data = {'Имя': 'Алексей', 'Возраст': 25} with open('data.json', 'w', encoding='utf-8') as file: json.dump(data, file, ensure_ascii=False, indent=4) </code></pre> <p>Параметр <em>ensure_ascii=False</em> сохраняет кириллицу, а <em>indent=4</em> делает файл читаемым, добавляя отступы. Если данные представляют собой список словарей, структура сохранится аналогично.</p> <p>Для чтения данных из JSON используйте <em>json.load</em>:</p> <pre><code>with open('data.json', 'r', encoding='utf-8') as file: data = json.load(file) </code></pre> <p>Выбирайте формат в зависимости от задачи. CSV удобен для табличных данных, а JSON – для сложных структур с вложенными элементами.</p> <h3>Обход ограничений и работа с CAPTCHA</h3> <p>Для обхода ограничений на веб-сайтах начните с использования прокси-серверов. Они помогают распределять запросы между разными IP-адресами, снижая вероятность блокировки. Выберите надежные прокси из пула, например, от таких провайдеров, как Luminati или Smartproxy.</p> <ul> <li>Используйте библиотеку <code>requests</code> с параметром <code>proxies</code> для настройки прокси.</li> <li>Регулярно меняйте IP-адреса, чтобы избежать детектирования.</li> </ul> <p>Для работы с CAPTCHA рассмотрите интеграцию с сервисами автоматического распознавания, такими как 2Captcha или Anti-Captcha. Эти сервисы предоставляют API для обработки CAPTCHA за небольшую плату.</p> <ol> <li>Зарегистрируйтесь на выбранном сервисе и получите API-ключ.</li> <li>Используйте библиотеку <code>requests</code> или <code>selenium</code> для отправки CAPTCHA на сервер.</li> <li>Получите ответ и введите его в соответствующее поле на сайте.</li> </ol> <p>Если сайт использует JavaScript для загрузки контента, подключите библиотеку <code>selenium</code>. Она позволяет эмулировать действия пользователя, включая прокрутку страницы и клики. Убедитесь, что используете актуальную версию драйвера для браузера, например, ChromeDriver.</p> <ul> <li>Настройте задержки между запросами с помощью <code>time.sleep()</code>, чтобы имитировать поведение человека.</li> <li>Используйте режим «headless» для ускорения работы скрипта.</li> </ul> <p>Для защиты от блокировки по User-Agent регулярно обновляйте список строк User-Agent. Используйте библиотеку <code>fake_useragent</code>, чтобы автоматически генерировать случайные значения.</p> <ul> <li>Установите библиотеку командой <code>pip install fake-useragent</code>.</li> <li>Применяйте случайный User-Agent для каждого запроса.</li> </ul> <p>Если сайт использует сложные механизмы защиты, такие как Cloudflare, рассмотрите использование готовых решений, например, <code>cloudscraper</code>. Эта библиотека помогает обходить защиту Cloudflare без ручной настройки.</p> <ul> <li>Установите библиотеку командой <code>pip install cloudscraper</code>.</li> <li>Используйте её вместо стандартного <code>requests</code> для работы с защищенными сайтами.</li> </ul> <p>Помните, что обход ограничений может нарушать правила использования сайта. Убедитесь, что ваши действия соответствуют законодательству и политике ресурса.</p> </p> </div><!-- .entry-content --> </article><!-- #post-## --> <div class="entry-footer"> </div> <div class="b-share b-share--post"> <div class="b-share__title">Понравилась статья? Поделить с друзьями:</div> <span class="b-share__ico b-share__vk js-share-link" data-uri="http://vk.com/share.php?url=https%3A%2F%2Fxn----7sbbh7akdldfh0ai3n.xn--p1ai%2F%25d0%25b2%25d0%25b5%25d0%25b1-%25d1%2581%25d0%25ba%25d1%2580%25d0%25b5%25d0%25b9%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3-%25d0%25bd%25d0%25b0-python-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25bd%25d0%25be%25d0%25b5-%25d1%2580%25d1%2583%25d0%25ba%25d0%25be%25d0%25b2%25d0%25be%25d0%25b4%25d1%2581%25d1%2582%25d0%25b2%25d0%25be%2F"></span> <span class="b-share__ico b-share__fb js-share-link" data-uri="http://www.facebook.com/sharer.php?u=https%3A%2F%2Fxn----7sbbh7akdldfh0ai3n.xn--p1ai%2F%25d0%25b2%25d0%25b5%25d0%25b1-%25d1%2581%25d0%25ba%25d1%2580%25d0%25b5%25d0%25b9%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3-%25d0%25bd%25d0%25b0-python-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25bd%25d0%25be%25d0%25b5-%25d1%2580%25d1%2583%25d0%25ba%25d0%25be%25d0%25b2%25d0%25be%25d0%25b4%25d1%2581%25d1%2582%25d0%25b2%25d0%25be%2F"></span> <span class="b-share__ico b-share__tw js-share-link" data-uri="http://twitter.com/share?text=%D0%92%D0%B5%D0%B1+%D1%81%D0%BA%D1%80%D0%B5%D0%B9%D0%BF%D0%B8%D0%BD%D0%B3+%D0%BD%D0%B0+Python+%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5+%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE+%D0%B4%D0%BB%D1%8F+%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2&url=https%3A%2F%2Fxn----7sbbh7akdldfh0ai3n.xn--p1ai%2F%25d0%25b2%25d0%25b5%25d0%25b1-%25d1%2581%25d0%25ba%25d1%2580%25d0%25b5%25d0%25b9%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3-%25d0%25bd%25d0%25b0-python-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25bd%25d0%25be%25d0%25b5-%25d1%2580%25d1%2583%25d0%25ba%25d0%25be%25d0%25b2%25d0%25be%25d0%25b4%25d1%2581%25d1%2582%25d0%25b2%25d0%25be%2F"></span> <span class="b-share__ico b-share__ok js-share-link" data-uri="https://connect.ok.ru/dk?st.cmd=WidgetSharePreview&service=odnoklassniki&st.shareUrl=https%3A%2F%2Fxn----7sbbh7akdldfh0ai3n.xn--p1ai%2F%25d0%25b2%25d0%25b5%25d0%25b1-%25d1%2581%25d0%25ba%25d1%2580%25d0%25b5%25d0%25b9%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3-%25d0%25bd%25d0%25b0-python-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25bd%25d0%25be%25d0%25b5-%25d1%2580%25d1%2583%25d0%25ba%25d0%25be%25d0%25b2%25d0%25be%25d0%25b4%25d1%2581%25d1%2582%25d0%25b2%25d0%25be%2F"></span> <span class="b-share__ico b-share__gp js-share-link" data-uri="https://plus.google.com/share?url=https%3A%2F%2Fxn----7sbbh7akdldfh0ai3n.xn--p1ai%2F%25d0%25b2%25d0%25b5%25d0%25b1-%25d1%2581%25d0%25ba%25d1%2580%25d0%25b5%25d0%25b9%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3-%25d0%25bd%25d0%25b0-python-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25bd%25d0%25be%25d0%25b5-%25d1%2580%25d1%2583%25d0%25ba%25d0%25be%25d0%25b2%25d0%25be%25d0%25b4%25d1%2581%25d1%2582%25d0%25b2%25d0%25be%2F"></span> <span class="b-share__ico b-share__whatsapp js-share-link js-share-link-no-window" data-uri="whatsapp://send?text=%D0%92%D0%B5%D0%B1+%D1%81%D0%BA%D1%80%D0%B5%D0%B9%D0%BF%D0%B8%D0%BD%D0%B3+%D0%BD%D0%B0+Python+%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5+%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE+%D0%B4%D0%BB%D1%8F+%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2%20https%3A%2F%2Fxn----7sbbh7akdldfh0ai3n.xn--p1ai%2F%25d0%25b2%25d0%25b5%25d0%25b1-%25d1%2581%25d0%25ba%25d1%2580%25d0%25b5%25d0%25b9%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3-%25d0%25bd%25d0%25b0-python-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25bd%25d0%25be%25d0%25b5-%25d1%2580%25d1%2583%25d0%25ba%25d0%25be%25d0%25b2%25d0%25be%25d0%25b4%25d1%2581%25d1%2582%25d0%25b2%25d0%25be%2F"></span> <span class="b-share__ico b-share__viber js-share-link js-share-link-no-window" data-uri="viber://forward?text=%D0%92%D0%B5%D0%B1+%D1%81%D0%BA%D1%80%D0%B5%D0%B9%D0%BF%D0%B8%D0%BD%D0%B3+%D0%BD%D0%B0+Python+%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5+%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE+%D0%B4%D0%BB%D1%8F+%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2%20https%3A%2F%2Fxn----7sbbh7akdldfh0ai3n.xn--p1ai%2F%25d0%25b2%25d0%25b5%25d0%25b1-%25d1%2581%25d0%25ba%25d1%2580%25d0%25b5%25d0%25b9%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3-%25d0%25bd%25d0%25b0-python-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25bd%25d0%25be%25d0%25b5-%25d1%2580%25d1%2583%25d0%25ba%25d0%25be%25d0%25b2%25d0%25be%25d0%25b4%25d1%2581%25d1%2582%25d0%25b2%25d0%25be%2F"></span> <span class="b-share__ico b-share__telegram js-share-link js-share-link-no-window" data-uri="https://telegram.me/share/url?url=https%3A%2F%2Fxn----7sbbh7akdldfh0ai3n.xn--p1ai%2F%25d0%25b2%25d0%25b5%25d0%25b1-%25d1%2581%25d0%25ba%25d1%2580%25d0%25b5%25d0%25b9%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3-%25d0%25bd%25d0%25b0-python-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25bd%25d0%25be%25d0%25b5-%25d1%2580%25d1%2583%25d0%25ba%25d0%25be%25d0%25b2%25d0%25be%25d0%25b4%25d1%2581%25d1%2582%25d0%25b2%25d0%25be%2F&text=%D0%92%D0%B5%D0%B1+%D1%81%D0%BA%D1%80%D0%B5%D0%B9%D0%BF%D0%B8%D0%BD%D0%B3+%D0%BD%D0%B0+Python+%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5+%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE+%D0%B4%D0%BB%D1%8F+%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2"></span> </div> <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%b2%d0%b5%d0%b1-%d1%81%d0%ba%d1%80%d0%b5%d0%b9%d0%bf%d0%b8%d0%bd%d0%b3-%d0%bd%d0%b0-python-%d0%bf%d0%be%d0%bb%d0%bd%d0%be%d0%b5-%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be/"/> <meta itemprop="dateModified" content="2024-12-27"/> <meta itemprop="datePublished" content="2024-12-27T10:30:02+03:00"/> <div class="wpdiscuz_top_clearing"></div> <div id='comments' class='comments-area'><div id='respond' style='width: 0;height: 0;clear: both;margin: 0;padding: 0;'></div><div id='wpd-post-rating' class='wpd-not-rated'> <div class='wpd-rating-wrap'> <div class='wpd-rating-left'></div> <div class='wpd-rating-data'> <div class='wpd-rating-value'> <span class='wpdrv'>0</span> <span class='wpdrc'>0</span> <span class='wpdrt'>голоса</span></div> <div class='wpd-rating-title'>Рейтинг статьи</div> <div class='wpd-rating-stars'><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg></div><div class='wpd-rate-starts'><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg><svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path class='wpd-star' d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/><path d='M0 0h24v24H0z' fill='none'/></svg></div></div> <div class='wpd-rating-right'></div></div></div> <div id="wpdcom" class="wpdiscuz_unauth wpd-default wpd-layout-1 wpd-comments-open"> <div class="wc_social_plugin_wrapper"> </div> <div class="wpd-form-wrap"> <div class="wpd-form-head"> <div class="wpd-sbs-toggle"> <i class="far fa-envelope"></i> <span class="wpd-sbs-title">Подписаться</span> <i class="fas fa-caret-down"></i> </div> <div class="wpd-auth"> <div class="wpd-login"> <a rel="nofollow" href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-login.php?redirect_to=https%3A%2F%2Fxn----7sbbh7akdldfh0ai3n.xn--p1ai%2F%25d0%25b2%25d0%25b5%25d0%25b1-%25d1%2581%25d0%25ba%25d1%2580%25d0%25b5%25d0%25b9%25d0%25bf%25d0%25b8%25d0%25bd%25d0%25b3-%25d0%25bd%25d0%25b0-python-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25bd%25d0%25be%25d0%25b5-%25d1%2580%25d1%2583%25d0%25ba%25d0%25be%25d0%25b2%25d0%25be%25d0%25b4%25d1%2581%25d1%2582%25d0%25b2%25d0%25be%2F"><i class='fas fa-sign-in-alt'></i> авторизуйтесь</a> </div> </div> </div> <div class="wpdiscuz-subscribe-bar wpdiscuz-hidden"> <form action="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-admin/admin-ajax.php?action=wpdAddSubscription" method="post" id="wpdiscuz-subscribe-form"> <div class="wpdiscuz-subscribe-form-intro">Уведомить о </div> <div class="wpdiscuz-subscribe-form-option" style="width:40%;"> <select class="wpdiscuz_select" name="wpdiscuzSubscriptionType"> <option value="post">новых последующих комментариях</option> <option value="all_comment" >новых ответах на мои комментарии</option> </select> </div> <div class="wpdiscuz-item wpdiscuz-subscribe-form-email"> <input class="email" type="email" name="wpdiscuzSubscriptionEmail" required="required" value="" placeholder="Email"/> </div> <div class="wpdiscuz-subscribe-form-button"> <input id="wpdiscuz_subscription_button" class="wpd-prim-button wpd_not_clicked" type="submit" value="›" name="wpdiscuz_subscription_button"/> </div> <input type="hidden" id="wpdiscuz_subscribe_form_nonce" name="wpdiscuz_subscribe_form_nonce" value="1b636d8a4d" /><input type="hidden" name="_wp_http_referer" value="/%D0%B2%D0%B5%D0%B1-%D1%81%D0%BA%D1%80%D0%B5%D0%B9%D0%BF%D0%B8%D0%BD%D0%B3-%D0%BD%D0%B0-python-%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5-%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE/" /> </form> </div> <div class="wpd-form wpd-form-wrapper wpd-main-form-wrapper" id='wpd-main-form-wrapper-0_0'> <form method="post" enctype="multipart/form-data" data-uploading="false" class="wpd_comm_form wpd_main_comm_form" > <div class="wpd-field-comment"> <div class="wpdiscuz-item wc-field-textarea"> <div class="wpdiscuz-textarea-wrap "> <div class="wpd-avatar"> <img alt='guest' src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2056%2056'%3E%3C/svg%3E" data-lazy-srcset='https://secure.gravatar.com/avatar/3b5536e4681340a9a54adfe38dd3a76eb3227d61e812fdbce46669aa1d216733?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' decoding='async' data-lazy-src="https://secure.gravatar.com/avatar/3b5536e4681340a9a54adfe38dd3a76eb3227d61e812fdbce46669aa1d216733?s=56&d=mm&r=g"/><noscript><img alt='guest' src='https://secure.gravatar.com/avatar/3b5536e4681340a9a54adfe38dd3a76eb3227d61e812fdbce46669aa1d216733?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/3b5536e4681340a9a54adfe38dd3a76eb3227d61e812fdbce46669aa1d216733?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' decoding='async'/></noscript> </div> <div id="wpd-editor-wraper-0_0" style="display: none;"> <div id="wpd-editor-char-counter-0_0" class="wpd-editor-char-counter"></div> <label style="display: none;" for="wc-textarea-0_0">Label</label> <textarea id="wc-textarea-0_0" name="wc_comment" class="wc_comment wpd-field"></textarea> <div id="wpd-editor-0_0"></div> <div id="wpd-editor-toolbar-0_0"> <button title="Жирный" class="ql-bold" ></button> <button title="Курсив" class="ql-italic" ></button> <button title="Подчеркивание" class="ql-underline" ></button> <button title="Зачеркивание" class="ql-strike" ></button> <button title="Упорядоченный список" class="ql-list" value='ordered' ></button> <button title="Неупорядоченный список" class="ql-list" value='bullet' ></button> <button title="Цитата" class="ql-blockquote" ></button> <button title="Блок кода" class="ql-code-block" ></button> <button title="Ссылка" class="ql-link" ></button> <button title="Исходный код" class="ql-sourcecode" data-wpde_button_name='sourcecode'>{}</button> <button title="Спойлер" class="ql-spoiler" data-wpde_button_name='spoiler'>[+]</button> <div class="wpd-editor-buttons-right"> <span class='wmu-upload-wrap' wpd-tooltip='Прикрепить изображение к этому комментарию' wpd-tooltip-position='left'><label class='wmu-add'><i class='far fa-image'></i><input style='display:none;' class='wmu-add-files' type='file' name='wmu_files' accept='image/*'/></label></span> </div> </div> </div> </div> </div> </div> <div class="wpd-form-foot" style='display:none;'> <div class="wpdiscuz-textarea-foot"> <div class="wpdiscuz-button-actions"><div class='wmu-action-wrap'><div class='wmu-tabs wmu-images-tab wmu-hide'></div></div></div> </div> <div class="wpd-form-row"> <div class="wpd-form-col-left"> <div class="wpdiscuz-item wc_name-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-user"></i> </div> <input id="wc_name-0_0" value="" required='required' aria-required='true' class="wc_name wpd-field" type="text" name="wc_name" placeholder="Имя*" maxlength="50" pattern='.{3,50}' title=""> <label for="wc_name-0_0" class="wpdlb">Имя*</label> </div> <div class="wpdiscuz-item wc_email-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-at"></i> </div> <input id="wc_email-0_0" value="" required='required' aria-required='true' class="wc_email wpd-field" type="email" name="wc_email" placeholder="Email*"/> <label for="wc_email-0_0" class="wpdlb">Email*</label> </div> <div class="wpdiscuz-item wc_website-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-link"></i> </div> <input id="wc_website-0_0" value="" class="wc_website wpd-field" type="text" name="wc_website" placeholder="Веб-сайт"/> <label for="wc_website-0_0" class="wpdlb">Веб-сайт</label> </div> </div> <div class="wpd-form-col-right"> <div class="wc-field-submit"> <label class="wpd_label" wpd-tooltip="Сообщать о всех новых ответах на мои комментарии"> <input id="wc_notification_new_comment-0_0" class="wc_notification_new_comment-0_0 wpd_label__checkbox" value="comment" type="checkbox" name="wpdiscuz_notification_type" /> <span class="wpd_label__text"> <span class="wpd_label__check"> <i class="fas fa-bell wpdicon wpdicon-on"></i> <i class="fas fa-bell-slash wpdicon wpdicon-off"></i> </span> </span> </label> <input id="wpd-field-submit-0_0" class="wc_comm_submit wpd_not_clicked wpd-prim-button" type="submit" name="submit" value="Оставить комментарий" aria-label="Оставить комментарий"/> </div> </div> <div class="clearfix"></div> </div> </div> <input type="hidden" class="wpdiscuz_unique_id" value="0_0" name="wpdiscuz_unique_id"> <p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="081fb26151" /></p><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="110"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p> </form> </div> <div id="wpdiscuz_hidden_secondary_form" style="display: none;"> <div class="wpd-form wpd-form-wrapper wpd-secondary-form-wrapper" id='wpd-secondary-form-wrapper-wpdiscuzuniqueid' style='display: none;'> <div class="wpd-secondary-forms-social-content"></div> <div class="clearfix"></div> <form method="post" enctype="multipart/form-data" data-uploading="false" class="wpd_comm_form wpd-secondary-form-wrapper" > <div class="wpd-field-comment"> <div class="wpdiscuz-item wc-field-textarea"> <div class="wpdiscuz-textarea-wrap "> <div class="wpd-avatar"> <img alt='guest' src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2056%2056'%3E%3C/svg%3E" data-lazy-srcset='https://secure.gravatar.com/avatar/0d4a70cce64d019ee964977a2f30ba85c7a906f1f08224ccbc0eb637bbe4f35c?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' decoding='async' data-lazy-src="https://secure.gravatar.com/avatar/0d4a70cce64d019ee964977a2f30ba85c7a906f1f08224ccbc0eb637bbe4f35c?s=56&d=mm&r=g"/><noscript><img alt='guest' src='https://secure.gravatar.com/avatar/0d4a70cce64d019ee964977a2f30ba85c7a906f1f08224ccbc0eb637bbe4f35c?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/0d4a70cce64d019ee964977a2f30ba85c7a906f1f08224ccbc0eb637bbe4f35c?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' decoding='async'/></noscript> </div> <div id="wpd-editor-wraper-wpdiscuzuniqueid" style="display: none;"> <div id="wpd-editor-char-counter-wpdiscuzuniqueid" class="wpd-editor-char-counter"></div> <label style="display: none;" for="wc-textarea-wpdiscuzuniqueid">Label</label> <textarea id="wc-textarea-wpdiscuzuniqueid" name="wc_comment" class="wc_comment wpd-field"></textarea> <div id="wpd-editor-wpdiscuzuniqueid"></div> <div id="wpd-editor-toolbar-wpdiscuzuniqueid"> <button title="Жирный" class="ql-bold" ></button> <button title="Курсив" class="ql-italic" ></button> <button title="Подчеркивание" class="ql-underline" ></button> <button title="Зачеркивание" class="ql-strike" ></button> <button title="Упорядоченный список" class="ql-list" value='ordered' ></button> <button title="Неупорядоченный список" class="ql-list" value='bullet' ></button> <button title="Цитата" class="ql-blockquote" ></button> <button title="Блок кода" class="ql-code-block" ></button> <button title="Ссылка" class="ql-link" ></button> <button title="Исходный код" class="ql-sourcecode" data-wpde_button_name='sourcecode'>{}</button> <button title="Спойлер" class="ql-spoiler" data-wpde_button_name='spoiler'>[+]</button> <div class="wpd-editor-buttons-right"> <span class='wmu-upload-wrap' wpd-tooltip='Прикрепить изображение к этому комментарию' wpd-tooltip-position='left'><label class='wmu-add'><i class='far fa-image'></i><input style='display:none;' class='wmu-add-files' type='file' name='wmu_files' accept='image/*'/></label></span> </div> </div> </div> </div> </div> </div> <div class="wpd-form-foot" style='display:none;'> <div class="wpdiscuz-textarea-foot"> <div class="wpdiscuz-button-actions"><div class='wmu-action-wrap'><div class='wmu-tabs wmu-images-tab wmu-hide'></div></div></div> </div> <div class="wpd-form-row"> <div class="wpd-form-col-left"> <div class="wpdiscuz-item wc_name-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-user"></i> </div> <input id="wc_name-wpdiscuzuniqueid" value="" required='required' aria-required='true' class="wc_name wpd-field" type="text" name="wc_name" placeholder="Имя*" maxlength="50" pattern='.{3,50}' title=""> <label for="wc_name-wpdiscuzuniqueid" class="wpdlb">Имя*</label> </div> <div class="wpdiscuz-item wc_email-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-at"></i> </div> <input id="wc_email-wpdiscuzuniqueid" value="" required='required' aria-required='true' class="wc_email wpd-field" type="email" name="wc_email" placeholder="Email*"/> <label for="wc_email-wpdiscuzuniqueid" class="wpdlb">Email*</label> </div> <div class="wpdiscuz-item wc_website-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-link"></i> </div> <input id="wc_website-wpdiscuzuniqueid" value="" class="wc_website wpd-field" type="text" name="wc_website" placeholder="Веб-сайт"/> <label for="wc_website-wpdiscuzuniqueid" class="wpdlb">Веб-сайт</label> </div> </div> <div class="wpd-form-col-right"> <div class="wc-field-submit"> <label class="wpd_label" wpd-tooltip="Сообщать о всех новых ответах на мои комментарии"> <input id="wc_notification_new_comment-wpdiscuzuniqueid" class="wc_notification_new_comment-wpdiscuzuniqueid wpd_label__checkbox" value="comment" type="checkbox" name="wpdiscuz_notification_type" /> <span class="wpd_label__text"> <span class="wpd_label__check"> <i class="fas fa-bell wpdicon wpdicon-on"></i> <i class="fas fa-bell-slash wpdicon wpdicon-off"></i> </span> </span> </label> <input id="wpd-field-submit-wpdiscuzuniqueid" class="wc_comm_submit wpd_not_clicked wpd-prim-button" type="submit" name="submit" value="Оставить комментарий" aria-label="Оставить комментарий"/> </div> </div> <div class="clearfix"></div> </div> </div> <input type="hidden" class="wpdiscuz_unique_id" value="wpdiscuzuniqueid" name="wpdiscuz_unique_id"> <p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="081fb26151" /></p><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_2" name="ak_js" value="46"/><script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script></p> </form> </div> </div> </div> <div id="wpd-threads" class="wpd-thread-wrapper"> <div class="wpd-thread-head"> <div class="wpd-thread-info " data-comments-count="0"> <span class='wpdtc' title='0'>0</span> комментариев </div> <div class="wpd-space"></div> <div class="wpd-thread-filter"> <div class="wpd-filter wpdf-reacted wpd_not_clicked wpdiscuz-hidden" wpd-tooltip="Самый популярный комментарий "> <i class="fas fa-bolt"></i></div> <div class="wpd-filter wpdf-hottest wpd_not_clicked wpdiscuz-hidden" wpd-tooltip="Цепочка популярного комментария"> <i class="fas fa-fire"></i></div> <div class="wpd-filter wpdf-sorting wpdiscuz-hidden"> <span class="wpdiscuz-sort-button wpdiscuz-date-sort-asc wpdiscuz-sort-button-active" data-sorting="oldest">Старые</span> <i class="fas fa-sort-down"></i> <div class="wpdiscuz-sort-buttons"> <span class="wpdiscuz-sort-button wpdiscuz-date-sort-desc" data-sorting="newest">Новые</span> <span class="wpdiscuz-sort-button wpdiscuz-vote-sort-up" data-sorting="by_vote">Популярные</span> </div> </div> </div> </div> <div class="wpd-comment-info-bar"> <div class="wpd-current-view"><i class="fas fa-quote-left"></i> Межтекстовые Отзывы </div> <div class="wpd-filter-view-all">Посмотреть все комментарии</div> </div> <div class="wpd-thread-list"> <!-- // From wpDiscuz's Caches // --> <div class="wpdiscuz-comment-pagination"> </div> </div> </div> </div> </div> <div id="wpdiscuz-loading-bar" class="wpdiscuz-loading-bar-unauth"></div> <div id="wpdiscuz-comment-message" class="wpdiscuz-comment-message-unauth"></div> <style> .related-posts-container { display: flex; flex-wrap: wrap; /* Позволяет карточкам переходить на следующую строку, если не помещаются */ justify-content: flex-start; /* Выравнивание карточек по левому краю */ gap: 20px; /* Промежуток между карточками */ } .related-post-card { display: flex; flex-direction: column; align-items: center; justify-content: center; margin: 10px; padding: 15px; background-color: #f9f9f9; border-radius: 10px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); transition: all 0.3s ease; width: 180px; /* Уменьшаем ширину, чтобы они умещались в ряд */ text-align: center; } .related-post-card:hover { transform: translateY(-5px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2); } .related-p </style> <div class="related-posts-container"><li class='li1 related-post-card'><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt='Src Python Полное Руководство по Использованию и Основам' class='post-thumbnail' data-lazy-src="/wp-content/images/src-python-chto-eto-i-kak-ispolzovat-polnoe-rukovodstvo.jpg"><noscript><img src='/wp-content/images/src-python-chto-eto-i-kak-ispolzovat-polnoe-rukovodstvo.jpg' alt='Src Python Полное Руководство по Использованию и Основам' class='post-thumbnail'></noscript><a href='https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/src-python-%d0%bf%d0%be%d0%bb%d0%bd%d0%be%d0%b5-%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d0%be-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8/' title='Src Python Полное Руководство по Использованию и Основам'>Src Python Полное Руководство по Использованию и Основам</a></li><li class='li2 related-post-card'><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt='PHP и HTML вместе эффективная веб-разработка и совмещение' class='post-thumbnail' data-lazy-src="/wp-content/images/php-kod-vnutri-html-kak-effektivno-kombinirovat-yaziki-dlya-veb-razrabo.jpg"><noscript><img src='/wp-content/images/php-kod-vnutri-html-kak-effektivno-kombinirovat-yaziki-dlya-veb-razrabo.jpg' alt='PHP и HTML вместе эффективная веб-разработка и совмещение' class='post-thumbnail'></noscript><a href='https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/php-%d0%b8-html-%d0%b2%d0%bc%d0%b5%d1%81%d1%82%d0%b5-%d1%8d%d1%84%d1%84%d0%b5%d0%ba%d1%82%d0%b8%d0%b2%d0%bd%d0%b0%d1%8f-%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0/' title='PHP и HTML вместе эффективная веб-разработка и совмещение'>PHP и HTML вместе эффективная веб-разработка и совмещение</a></li><li class='li1 related-post-card'><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt='Запуск команд в оболочке через Python полное руководство' class='post-thumbnail' data-lazy-src="/wp-content/images/kak-zapustit-komandu-v-obolochke-s-pomoshyu-python-polnoe-rukovodstvo.jpg"><noscript><img src='/wp-content/images/kak-zapustit-komandu-v-obolochke-s-pomoshyu-python-polnoe-rukovodstvo.jpg' alt='Запуск команд в оболочке через Python полное руководство' class='post-thumbnail'></noscript><a href='https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d0%ba-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4-%d0%b2-%d0%be%d0%b1%d0%be%d0%bb%d0%be%d1%87%d0%ba%d0%b5-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-python-%d0%bf%d0%be%d0%bb%d0%bd%d0%be/' title='Запуск команд в оболочке через Python полное руководство'>Запуск команд в оболочке через Python полное руководство</a></li><li class='li2 related-post-card'><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt='Как открыть файл PHP полное руководство и советы' class='post-thumbnail' data-lazy-src="/wp-content/images/kak-otkrit-fajl-formata-php-polnoe-rukovodstvo-i-rekomendatsii.jpg"><noscript><img src='/wp-content/images/kak-otkrit-fajl-formata-php-polnoe-rukovodstvo-i-rekomendatsii.jpg' alt='Как открыть файл PHP полное руководство и советы' class='post-thumbnail'></noscript><a href='https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%ba%d0%b0%d0%ba-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d1%82%d1%8c-%d1%84%d0%b0%d0%b9%d0%bb-php-%d0%bf%d0%be%d0%bb%d0%bd%d0%be%d0%b5-%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be/' title='Как открыть файл PHP полное руководство и советы'>Как открыть файл PHP полное руководство и советы</a></li><li class='li1 related-post-card'><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt='Как вставить картинку в HTML пошаговое руководство для новичков' class='post-thumbnail' data-lazy-src="/wp-content/images/kak-vstroit-kartinku-v-html-kod-poshagovoe-rukovodstvo-dlya-nachinayushix.jpg"><noscript><img src='/wp-content/images/kak-vstroit-kartinku-v-html-kod-poshagovoe-rukovodstvo-dlya-nachinayushix.jpg' alt='Как вставить картинку в HTML пошаговое руководство для новичков' class='post-thumbnail'></noscript><a href='https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%ba%d0%b0%d0%ba-%d0%b2%d1%81%d1%82%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-%d0%ba%d0%b0%d1%80%d1%82%d0%b8%d0%bd%d0%ba%d1%83-%d0%b2-html-%d0%bf%d0%be%d1%88%d0%b0%d0%b3%d0%be%d0%b2%d0%be%d0%b5-%d1%80%d1%83/' title='Как вставить картинку в HTML пошаговое руководство для новичков'>Как вставить картинку в HTML пошаговое руководство для новичков</a></li><li class='li2 related-post-card'><img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt='Вызов конструктора родительского класса в Python полное руководство' class='post-thumbnail' data-lazy-src="/wp-content/images/vizov-konstruktora-roditelskogo-klassa-v-python-polnoe-rukovodstvo.jpg"><noscript><img src='/wp-content/images/vizov-konstruktora-roditelskogo-klassa-v-python-polnoe-rukovodstvo.jpg' alt='Вызов конструктора родительского класса в Python полное руководство' class='post-thumbnail'></noscript><a href='https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%b2%d1%8b%d0%b7%d0%be%d0%b2-%d0%ba%d0%be%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%82%d0%be%d1%80%d0%b0-%d1%80%d0%be%d0%b4%d0%b8%d1%82%d0%b5%d0%bb%d1%8c%d1%81%d0%ba%d0%be%d0%b3%d0%be-%d0%ba%d0%bb-2/' title='Вызов конструктора родительского класса в Python полное руководство'>Вызов конструктора родительского класса в Python полное руководство</a></li></div><br> </main><!-- #main --> </div><!-- #primary --> </div><!-- micro --> <aside id="secondary" class="widget-area" itemscope itemtype="http://schema.org/WPSideBar"> <div id="search-2" class="widget widget_search"> <form role="search" method="get" id="searchform" action="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/" class="search-form"> <label class="screen-reader-text" for="s">Поиск: </label> <input type="text" value="" name="s" id="s" class="search-form__text"> <button type="submit" id="searchsubmit" class="search-form__submit"></button> </form></div><div id="wpshop_articles-2" class="widget widget_wpshop_articles"><div class="widget-header">Полезное</div> <div class="widget-article"> <div class="widget-article__image"> <a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8-%d0%bd%d0%b0-%d1%84%d0%b0%d0%b9%d0%bb-%d0%b2-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82-head-html/"> <img width="330" height="140" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20330%20140'%3E%3C/svg%3E" class="attachment-thumb-wide size-thumb-wide wp-post-image" alt="" decoding="async" data-lazy-srcset="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/2149901783-330x140.jpg 330w, https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/2149901783-770x330.jpg 770w" data-lazy-sizes="auto, (max-width: 330px) 100vw, 330px" data-lazy-src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/2149901783-330x140.jpg" /><noscript><img width="330" height="140" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/2149901783-330x140.jpg" class="attachment-thumb-wide size-thumb-wide wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/2149901783-330x140.jpg 330w, https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/2149901783-770x330.jpg 770w" sizes="auto, (max-width: 330px) 100vw, 330px" /></noscript> </a> </div> <div class="widget-article__body"> <div class="widget-article__title"><a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8-%d0%bd%d0%b0-%d1%84%d0%b0%d0%b9%d0%bb-%d0%b2-%d1%8d%d0%bb%d0%b5%d0%bc%d0%b5%d0%bd%d1%82-head-html/">Добавление ссылки на файл в элемент head HTML главной страницы</a></div> </div> </div> <div class="widget-article"> <div class="widget-article__image"> <a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%be%d0%b1%d1%8a%d0%b5%d0%ba%d1%82%d0%bd%d0%be-%d0%be%d1%80%d0%b8%d0%b5%d0%bd%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%bd%d0%be%d0%b5-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8-2/"> <img width="330" height="140" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20330%20140'%3E%3C/svg%3E" class="attachment-thumb-wide size-thumb-wide wp-post-image" alt="" decoding="async" data-lazy-srcset="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/programming-background-with-person-working-with-codes-computer-330x140.jpg 330w, https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/programming-background-with-person-working-with-codes-computer-770x330.jpg 770w" data-lazy-sizes="auto, (max-width: 330px) 100vw, 330px" data-lazy-src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/programming-background-with-person-working-with-codes-computer-330x140.jpg" /><noscript><img width="330" height="140" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/programming-background-with-person-working-with-codes-computer-330x140.jpg" class="attachment-thumb-wide size-thumb-wide wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/programming-background-with-person-working-with-codes-computer-330x140.jpg 330w, https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/programming-background-with-person-working-with-codes-computer-770x330.jpg 770w" sizes="auto, (max-width: 330px) 100vw, 330px" /></noscript> </a> </div> <div class="widget-article__body"> <div class="widget-article__title"><a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%be%d0%b1%d1%8a%d0%b5%d0%ba%d1%82%d0%bd%d0%be-%d0%be%d1%80%d0%b8%d0%b5%d0%bd%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%bd%d0%be%d0%b5-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8-2/">Объектно ориентированное программирование на Python для новичков</a></div> </div> </div> <div class="widget-article"> <div class="widget-article__image"> <a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d1%86%d0%b2%d0%b5%d1%82-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%b0-%d0%b2-html-%d1%82%d0%b0%d0%b1%d0%bb%d0%b8%d1%86%d0%b5/"> <img width="330" height="140" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20330%20140'%3E%3C/svg%3E" class="attachment-thumb-wide size-thumb-wide wp-post-image" alt="" decoding="async" data-lazy-srcset="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/122370-330x140.jpg 330w, https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/122370-770x330.jpg 770w" data-lazy-sizes="auto, (max-width: 330px) 100vw, 330px" data-lazy-src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/122370-330x140.jpg" /><noscript><img width="330" height="140" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/122370-330x140.jpg" class="attachment-thumb-wide size-thumb-wide wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/122370-330x140.jpg 330w, https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/122370-770x330.jpg 770w" sizes="auto, (max-width: 330px) 100vw, 330px" /></noscript> </a> </div> <div class="widget-article__body"> <div class="widget-article__title"><a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d1%86%d0%b2%d0%b5%d1%82-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%b0-%d0%b2-html-%d1%82%d0%b0%d0%b1%d0%bb%d0%b8%d1%86%d0%b5/">Как установить цвет текста в HTML таблице пошаговое руководство</a></div> </div> </div> <div class="widget-article"> <div class="widget-article__image"> <a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b0-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d1%8f-python-%d0%b4%d0%bb%d1%8f-%d1%83%d1%81%d0%bf%d0%b5%d1%88%d0%bd%d0%be%d0%b9-%d0%ba%d0%b0%d1%80/"> <img width="330" height="140" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20330%20140'%3E%3C/svg%3E" class="attachment-thumb-wide size-thumb-wide wp-post-image" alt="" decoding="async" data-lazy-src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/programma-dopolnitelnogo-obrazovaniya-po-python-izuchite-yazik-programmi-330x140.jpg" /><noscript><img width="330" height="140" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/uploads/2025/04/programma-dopolnitelnogo-obrazovaniya-po-python-izuchite-yazik-programmi-330x140.jpg" class="attachment-thumb-wide size-thumb-wide wp-post-image" alt="" decoding="async" loading="lazy" /></noscript> </a> </div> <div class="widget-article__body"> <div class="widget-article__title"><a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b0-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d1%8f-python-%d0%b4%d0%bb%d1%8f-%d1%83%d1%81%d0%bf%d0%b5%d1%88%d0%bd%d0%be%d0%b9-%d0%ba%d0%b0%d1%80/">Программа обучения Python для успешной карьеры в IT</a></div> </div> </div> </div> </aside><!-- #secondary --> </div><!-- #content --> <div class="footer-navigation container"> <div class="main-navigation-inner "> <div class="menu-niz-container"><ul id="footer_menu" class="menu"><li id="menu-item-41" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-41"><a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/pravoobladatelyam/">Правообладателям</a></li> <li id="menu-item-42" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-42"><a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/politika-konfidentsialnosti/">Политика конфиденциальности</a></li> <li id="menu-item-66" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-66"><a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/politika-cookies/">Политика cookies</a></li> <li id="menu-item-76" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-76"><a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/o-sayte/">О сайте</a></li> <li id="menu-item-77" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-77"><a href="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/%d0%ba%d0%be%d0%bd%d1%82%d0%b0%d0%ba%d1%82%d1%8b/">Контакты</a></li> </ul></div> </div> </div> <footer class="site-footer container" itemscope itemtype="http://schema.org/WPFooter"> <div class="site-footer-inner "> <form role="search" method="get" id="searchform" class="searchform" action="https://vkontakte-helper.ru/"> <input type="text" value="" name="s" id="s"> <input type="submit" id="searchsubmit" value="Поиск"> </form> <button type="button" class="scrolltop js-scrolltop"></button> <div class="footer-info"> © 2025 Большой экспертный помощник программисту <div class="footer-text">Внимание! Информация, опубликованная на сайте, носит исключительно ознакомительный характер и не является рекомендацией к применению. Часть материалов предоставлена пользователями и посетителями сайта. Администрация не несет ответственности за их содержание.</div> </div><!-- .site-info --> <div class="footer-counters"> </div> </div><!-- .site-footer-inner --> </footer><!-- .site-footer --> </div><!-- #page --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/root\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script>var pseudo_links = document.querySelectorAll(".pseudo-clearfy-link");for (var i=0;i<pseudo_links.length;i++ ) { pseudo_links[i].addEventListener("click", function(e){ window.open( e.target.getAttribute("data-uri") ); }); }</script><span id='wpdUserContentInfoAnchor' style='display:none;' rel='#wpdUserContentInfo' data-wpd-lity>wpDiscuz</span><div id='wpdUserContentInfo' style='overflow:auto;background:#FDFDF6;padding:20px;width:600px;max-width:100%;border-radius:6px;' class='lity-hide'></div><div id='wpd-editor-source-code-wrapper-bg'></div><div id='wpd-editor-source-code-wrapper'><textarea id='wpd-editor-source-code'></textarea><button id='wpd-insert-source-code'>Insert</button><input type='hidden' id='wpd-editor-uid' /></div><script type="text/javascript" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-includes/js/dist/hooks.min.js" id="wp-hooks-js"></script> <script type="text/javascript" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-includes/js/dist/i18n.min.js" id="wp-i18n-js"></script> <script type="text/javascript" id="wp-i18n-js-after"> /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); /* ]]> */ </script> <script type="text/javascript" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/plugins/contact-form-7/includes/swv/js/index.js" id="swv-js"></script> <script type="text/javascript" id="contact-form-7-js-translations"> /* <![CDATA[ */ ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "contact-form-7", {"translation-revision-date":"2025-09-30 08:46:06+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);","lang":"ru"},"This contact form is placed in the wrong place.":["\u042d\u0442\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435."],"Error:":["\u041e\u0448\u0438\u0431\u043a\u0430:"]}},"comment":{"reference":"includes\/js\/index.js"}} ); /* ]]> */ </script> <script type="text/javascript" id="contact-form-7-js-before"> /* <![CDATA[ */ var wpcf7 = { "api": { "root": "https:\/\/xn----7sbbh7akdldfh0ai3n.xn--p1ai\/wp-json\/", "namespace": "contact-form-7\/v1" } }; /* ]]> */ </script> <script type="text/javascript" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/plugins/contact-form-7/includes/js/index.js" id="contact-form-7-js"></script> <script type="text/javascript" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/themes/root/js/scripts.js" id="root-scripts-js"></script> <script type="text/javascript" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-includes/js/comment-reply.min.js" id="comment-reply-js" async="async" data-wp-strategy="async"></script> <script type="text/javascript" id="q2w3_fixed_widget-js-extra"> /* <![CDATA[ */ var q2w3_sidebar_options = [{"use_sticky_position":false,"margin_top":0,"margin_bottom":0,"stop_elements_selectors":"","screen_max_width":0,"screen_max_height":0,"widgets":[]}]; /* ]]> */ </script> <script type="text/javascript" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/plugins/q2w3-fixed-widget/js/frontend.min.js" id="q2w3_fixed_widget-js"></script> <script type="text/javascript" id="wpdiscuz-combo-js-js-extra"> /* <![CDATA[ */ var wpdiscuzAjaxObj = {"wc_hide_replies_text":"\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b","wc_show_replies_text":"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043e\u0442\u0432\u0435\u0442\u043e\u0432","wc_msg_required_fields":"\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u043b\u044f","wc_invalid_field":"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u043d\u0435\u0432\u0435\u0440\u043d\u043e","wc_error_empty_text":"\u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u044d\u0442\u043e \u043f\u043e\u043b\u0435, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c","wc_error_url_text":"url \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439","wc_error_email_text":"\u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043d\u0435\u0432\u0435\u0440\u0435\u043d","wc_invalid_captcha":"\u041d\u0435\u0432\u0435\u0440\u043d\u043e \u0432\u0432\u0435\u0434\u0435\u043d \u043a\u043e\u0434","wc_login_to_vote":"\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043e\u0439\u0442\u0438 , \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u0442\u044c","wc_deny_voting_from_same_ip":"\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u0442\u044c \u0437\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439","wc_self_vote":"\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u0442\u044c \u0437\u0430 \u0441\u0432\u043e\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439","wc_vote_only_one_time":"\u0412\u044b \u0443\u0436\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 \u0437\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439","wc_voting_error":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u044f","wc_banned_user":"You are banned","wc_comment_edit_not_possible":"\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c","wc_comment_not_updated":"\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043d\u0435 \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d","wc_comment_not_edited":"\u0412\u044b \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439","wc_msg_input_min_length":"\u0412\u0432\u043e\u0434 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439","wc_msg_input_max_length":"\u0412\u0432\u043e\u0434 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u044b\u0439","wc_spoiler_title":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u0430","wc_cannot_rate_again":"\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043d\u043e\u0432\u0430 \u043e\u0446\u0435\u043d\u0438\u0442\u044c","wc_not_allowed_to_rate":"\u0412\u0430\u043c \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043e\u0446\u0435\u043d\u043a\u0443","wc_confirm_rate_edit":"Are you sure you want to edit your rate?","wc_follow_user":"\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","wc_unfollow_user":"\u041e\u0442\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","wc_follow_success":"\u0412\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430","wc_follow_canceled":"\u0412\u044b \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430.","wc_follow_email_confirm":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 email \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443.","wc_follow_email_confirm_fail":"\u041e\u0447\u0435\u043d\u044c \u0436\u0430\u043b\u044c, \u043d\u043e \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0438\u0441\u044c\u043c\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f.","wc_follow_login_to_follow":"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.","wc_follow_impossible":"\u041e\u0447\u0435\u043d\u044c \u0436\u0430\u043b\u044c, \u043d\u043e \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.","wc_follow_not_added":"\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0437\u0436\u0435.","is_user_logged_in":"","commentListLoadType":"0","commentListUpdateType":"0","commentListUpdateTimer":"60","liveUpdateGuests":"0","wordpressThreadCommentsDepth":"5","wordpressIsPaginate":"0","commentTextMaxLength":"0","replyTextMaxLength":"0","commentTextMinLength":"1","replyTextMinLength":"1","storeCommenterData":"100000","socialLoginAgreementCheckbox":"1","enableFbLogin":"0","fbUseOAuth2":"0","enableFbShare":"0","facebookAppID":"","facebookUseOAuth2":"0","enableGoogleLogin":"0","googleClientID":"","googleClientSecret":"","cookiehash":"92e3ffaa65eb5bdef2159643a08f6b76","isLoadOnlyParentComments":"0","scrollToComment":"1","commentFormView":"collapsed","enableDropAnimation":"1","isNativeAjaxEnabled":"1","userInteractionCheck":"1","enableBubble":"0","bubbleLiveUpdate":"0","bubbleHintTimeout":"45","bubbleHintHideTimeout":"10","cookieHideBubbleHint":"wpdiscuz_hide_bubble_hint","bubbleHintShowOnce":"1","bubbleHintCookieExpires":"7","bubbleShowNewCommentMessage":"1","bubbleLocation":"content_left","firstLoadWithAjax":"0","wc_copied_to_clipboard":"\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430.","inlineFeedbackAttractionType":"blink","loadRichEditor":"1","wpDiscuzReCaptchaSK":"","wpDiscuzReCaptchaTheme":"light","wpDiscuzReCaptchaVersion":"2.0","wc_captcha_show_for_guest":"0","wc_captcha_show_for_members":"0","wpDiscuzIsShowOnSubscribeForm":"0","wmuEnabled":"1","wmuInput":"wmu_files","wmuMaxFileCount":"1","wmuMaxFileSize":"2097152","wmuPostMaxSize":"104857600","wmuIsLightbox":"1","wmuMimeTypes":{"jpg":"image\/jpeg","jpeg":"image\/jpeg","jpe":"image\/jpeg","gif":"image\/gif","png":"image\/png","bmp":"image\/bmp","tiff":"image\/tiff","tif":"image\/tiff","ico":"image\/x-icon"},"wmuPhraseConfirmDelete":"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435?","wmuPhraseNotAllowedFile":"\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430","wmuPhraseMaxFileCount":"\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 1","wmuPhraseMaxFileSize":"\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 2MB","wmuPhrasePostMaxSize":"\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f 100MB","wmuPhraseDoingUpload":"\u0418\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430! \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435.","msgEmptyFile":"File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.","msgPostIdNotExists":"ID \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442","msgUploadingNotAllowed":"\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430","msgPermissionDenied":"\u0423 \u0432\u0430\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f","wmuKeyImages":"images","wmuSingleImageWidth":"auto","wmuSingleImageHeight":"200","previewTemplate":"<div class=\"wmu-preview [PREVIEW_TYPE_CLASS]\" title=\"[PREVIEW_TITLE]\" data-wmu-type=\"[PREVIEW_TYPE]\" data-wmu-attachment=\"[PREVIEW_ID]\">\r\n <div class=\"wmu-preview-remove\">\r\n <img class=\"wmu-preview-img\" src=\"[PREVIEW_ICON]\">\r\n <div class=\"wmu-file-name\">[PREVIEW_FILENAME]<\/div>\r\n <!-- <div class=\"wmu-delete\">\u00a0<\/div>-->\r\n <\/div>\r\n<\/div>\r\n","isUserRated":"0","version":"7.6.34","wc_post_id":"14119","isCookiesEnabled":"1","loadLastCommentId":"0","dataFilterCallbacks":[],"phraseFilters":[],"scrollSize":"32","url":"https:\/\/xn----7sbbh7akdldfh0ai3n.xn--p1ai\/wp-admin\/admin-ajax.php","customAjaxUrl":"https:\/\/xn----7sbbh7akdldfh0ai3n.xn--p1ai\/wp-content\/plugins\/wpdiscuz\/utils\/ajax\/wpdiscuz-ajax.php","bubbleUpdateUrl":"https:\/\/xn----7sbbh7akdldfh0ai3n.xn--p1ai\/wp-json\/wpdiscuz\/v1\/update","restNonce":"ba9c494097","is_rate_editable":"0","menu_icon":"https:\/\/xn----7sbbh7akdldfh0ai3n.xn--p1ai\/wp-content\/plugins\/wpdiscuz\/assets\/img\/plugin-icon\/wpdiscuz-svg.svg","menu_icon_hover":"https:\/\/xn----7sbbh7akdldfh0ai3n.xn--p1ai\/wp-content\/plugins\/wpdiscuz\/assets\/img\/plugin-icon\/wpdiscuz-svg_hover.svg","is_email_field_required":"1"}; var wpdiscuzUCObj = {"msgConfirmDeleteComment":"\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439?","msgConfirmCancelSubscription":"\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443?","msgConfirmCancelFollow":"\u0423\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443?","additionalTab":"0"}; /* ]]> */ </script> <script type="text/javascript" id="wpdiscuz-combo-js-js-before"> /* <![CDATA[ */ var wpdiscuzEditorOptions = { modules: { toolbar: "", counter: { uniqueID: "", commentmaxcount : 0, replymaxcount : 0, commentmincount : 1, replymincount : 1, }, }, wc_be_the_first_text: "\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439!", wc_comment_join_text: "\u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044e", theme: 'snow', debug: 'error' }; /* ]]> */ </script> <script type="text/javascript" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/plugins/wpdiscuz/assets/js/wpdiscuz-combo.min.js" id="wpdiscuz-combo-js-js"></script> <script defer type="text/javascript" src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/plugins/akismet/_inc/akismet-frontend.js" id="akismet-frontend-js"></script> <script>window.lazyLoadOptions = [{ elements_selector: "img[data-lazy-src],.rocket-lazyload,iframe[data-lazy-src]", data_src: "lazy-src", data_srcset: "lazy-srcset", data_sizes: "lazy-sizes", class_loading: "lazyloading", class_loaded: "lazyloaded", threshold: 300, callback_loaded: function(element) { if ( element.tagName === "IFRAME" && element.dataset.rocketLazyload == "fitvidscompatible" ) { if (element.classList.contains("lazyloaded") ) { if (typeof window.jQuery != "undefined") { if (jQuery.fn.fitVids) { jQuery(element).parent().fitVids(); } } } } }},{ elements_selector: ".rocket-lazyload", data_src: "lazy-src", data_srcset: "lazy-srcset", data_sizes: "lazy-sizes", class_loading: "lazyloading", class_loaded: "lazyloaded", threshold: 300, }]; window.addEventListener('LazyLoad::Initialized', function (e) { var lazyLoadInstance = e.detail.instance; if (window.MutationObserver) { var observer = new MutationObserver(function(mutations) { var image_count = 0; var iframe_count = 0; var rocketlazy_count = 0; mutations.forEach(function(mutation) { for (var i = 0; i < mutation.addedNodes.length; i++) { if (typeof mutation.addedNodes[i].getElementsByTagName !== 'function') { continue; } if (typeof mutation.addedNodes[i].getElementsByClassName !== 'function') { continue; } images = mutation.addedNodes[i].getElementsByTagName('img'); is_image = mutation.addedNodes[i].tagName == "IMG"; iframes = mutation.addedNodes[i].getElementsByTagName('iframe'); is_iframe = mutation.addedNodes[i].tagName == "IFRAME"; rocket_lazy = mutation.addedNodes[i].getElementsByClassName('rocket-lazyload'); image_count += images.length; iframe_count += iframes.length; rocketlazy_count += rocket_lazy.length; if(is_image){ image_count += 1; } if(is_iframe){ iframe_count += 1; } } } ); if(image_count > 0 || iframe_count > 0 || rocketlazy_count > 0){ lazyLoadInstance.update(); } } ); var b = document.getElementsByTagName("body")[0]; var config = { childList: true, subtree: true }; observer.observe(b, config); } }, false);</script><script data-no-minify="1" async src="https://xn----7sbbh7akdldfh0ai3n.xn--p1ai/wp-content/plugins/rocket-lazy-load/assets/js/16.1/lazyload.min.js"></script><!-- <div class="flat_ads_block" style="width: 336px; height: 280px;" id="flat_ads_block_id_1"> <div class="flat_slide_cross"></div> <div class="wrap_flat_ads_block"> <div class="dvxtm5d4ae5adba5b5" ><!-- Yandex.RTB R-A-514351-1 --> <!-- <div id="yandex_rtb_R-A-514351-1"></div> <script type="text/javascript"> (function(w, d, n, s, t) { w[n] = w[n] || []; w[n].push(function() { Ya.Context.AdvManager.render({ blockId: "R-A-514351-1", renderTo: "yandex_rtb_R-A-514351-1", async: true }); }); t = d.getElementsByTagName("script")[0]; s = d.createElement("script"); s.type = "text/javascript"; s.src = "//an.yandex.ru/system/context.js"; s.async = true; t.parentNode.insertBefore(s, t); })(this, this.document, "yandexContextAsyncCallbacks"); </script></div><style type="text/css"> @media screen and (min-width: 1201px) { .dvxtm5d4ae5adba5b5 { display: block; } } @media screen and (min-width: 993px) and (max-width: 1200px) { .dvxtm5d4ae5adba5b5 { display: block; } } @media screen and (min-width: 769px) and (max-width: 992px) { .dvxtm5d4ae5adba5b5 { display: block; } } @media screen and (min-width: 768px) and (max-width: 768px) { .dvxtm5d4ae5adba5b5 { display: block; } } @media screen and (max-width: 767px) { .dvxtm5d4ae5adba5b5 { display: block; } } </style> </div> </div> <!-- script type="text/javascript"> $(document).ready(function() { console.log('ready'); $(window).on('scroll', function(){ if($(this).scrollTop() > 1000){ $('#flat_ads_block_id_1').addClass('left_slide_flat_panel'); } else { $('#flat_ads_block_id_1').removeClass('left_slide_flat_panel'); } }); }); </script --> <!-- было <style> #flat_ads_block_id_1 { position: fixed; right: calc(100% + 22px); bottom: 0px; transform-origin: center; transform: translateX(0); transition: all 0.3s ease; z-index: 998; } #flat_ads_block_id_1.left_slide_flat_panel { transform: translateX(calc(100% + 22px)); } #flat_ads_block_id_1 .flat_slide_cross { position: absolute; width: 22px; height: 22px; top: -22px; right: -10px; z-index: 1; background: #000 url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB2aWV3Qm94PSIwIDAgMTc1LjAwMDAwMCAxNzYuMDAwMDAwIgogcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCI+CjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLDE3Ni4wMDAwMDApIHNjYWxlKDAuMTAwMDAwLC0wLjEwMDAwMCkiCmZpbGw9IiNmZmYiIHN0cm9rZT0ibm9uZSI+CjxwYXRoIGQ9Ik02MzIgMTEyOCBsLTYyIC02MyA5MSAtOTEgOTEgLTkxIC05MSAtOTUgLTkwIC05NSA2NSAtNjQgNjQgLTY0IDkyCjkzIDkzIDkyIDkyIC05MiA5MyAtOTIgNjAgNTkgYzMzIDMzIDYwIDY0IDYwIDY5IDAgNiAtMzkgNTAgLTg3IDk4IGwtODggODgKODggODggYzQ4IDQ4IDg3IDkyIDg3IDk4IDAgMTIgLTExMiAxMjQgLTEyNSAxMjQgLTUgMCAtNDkgLTM5IC05NyAtODcgbC04OAotODggLTg4IDg4IGMtNDggNDggLTkwIDg3IC05MiA4NyAtMyAwIC0zMyAtMjggLTY4IC02MnoiLz4KPC9nPgo8L3N2Zz4K) no-repeat center / cover; cursor: pointer; border-radius: 100%; } #flat_ads_block_id_1 .flat_slide_cross:hover { background: #444 url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB2aWV3Qm94PSIwIDAgMTc1LjAwMDAwMCAxNzYuMDAwMDAwIgogcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCI+CjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLDE3Ni4wMDAwMDApIHNjYWxlKDAuMTAwMDAwLC0wLjEwMDAwMCkiCmZpbGw9IiNmZmYiIHN0cm9rZT0ibm9uZSI+CjxwYXRoIGQ9Ik02MzIgMTEyOCBsLTYyIC02MyA5MSAtOTEgOTEgLTkxIC05MSAtOTUgLTkwIC05NSA2NSAtNjQgNjQgLTY0IDkyCjkzIDkzIDkyIDkyIC05MiA5MyAtOTIgNjAgNTkgYzMzIDMzIDYwIDY0IDYwIDY5IDAgNiAtMzkgNTAgLTg3IDk4IGwtODggODgKODggODggYzQ4IDQ4IDg3IDkyIDg3IDk4IDAgMTIgLTExMiAxMjQgLTEyNSAxMjQgLTUgMCAtNDkgLTM5IC05NyAtODcgbC04OAotODggLTg4IDg4IGMtNDggNDggLTkwIDg3IC05MiA4NyAtMyAwIC0zMyAtMjggLTY4IC02MnoiLz4KPC9nPgo8L3N2Zz4K) no-repeat center / cover } </style> --> </body> </html>