Задать вопрос
  • Как реализовать индексацию страниц каталога с фильтрацией?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Поставить фильтр товаров, который сможет формировать get запрос. Соответсвенно, магазин должен отвечать на этот запрос и формировать выдачу с запрошенными товарами.
    2. Переписать шаблон поиска товаров так, чтобы он подставлял все необходимые данные в title, h1 и прочие важные seo элементы. Так же, переписать формирование микроразметки для более точечного отображения ссылки, рейтинга итп в поиске.
    3. Заранее создать маршруты из п1. так, чтобы они были доступны для индексации.
    4. Проследить, чтобы в меню и sitemap были проставлены ссылки на п3.

    Либо, воспользоваться плагинами, искать примерно так - woocommerce filtering with save url params (Premmerce WooCommerce Product Filter).
    Ответ написан
    Комментировать
  • Как искать за переделённый период?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В гугл есть функция поиска за месяц, за неделю, за день, но мне бы наоборот.

    Наоборот

    6617e36b1dc9d892889633.png

    6617e37229324063684547.png
    Ответ написан
    2 комментария
  • Какой актуальный стек верстки 2024?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. WebPack/Vite.
    2. CSS Modules (производительность и серверный рендеринг).
    3. Шаблонизатор по типу Handlebars или EJS (множество страниц, использование компонентов, проброс параметров итп).
    4. Bootstrap/Tailwind если надо быстро (но я обычно этот навоз не использую, руками быстрее и css и js написать).
    5. Flex/Grid.
    Ответ написан
  • Как сопоставлять товары при парсинге?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    0. Тренируем нейронку распознавать товары, материалы по Вашей теме:
    0.1. https://habr.com/ru/companies/stm_labs/articles/708608/
    0.2. https://new-retail.ru/business/e_commerce/price_ru...
    0.3. Сравнение текстовых описаний через методы обработки естественного языка (NLP), такие как TF-IDF, word2vec, BERT для извлечения смысла и семантического сравнения текстов (Spacy, Hugging Face Transformers и другие библиотеки NLP для анализа текста).
    0.4. Анализ изображений товаров с помощью сверточных нейронных сетей (CNN), которые могут выявлять визуальные сходства между изображениями товаров, даже если они отличаются углом съемки, освещением или масштабом (OpenCV и TensorFlow).
    0.5. Графовые базы данных и алгоритмы, которые могут использоваться для идентификации связей между товарами на основе их атрибутов и отношений.
    1. Нейронка из п0. распознает товары.
    2. Человек в случайном порядке проверяет работу нейронки из п1. и при необходимости, сообщает ей её ошибки. Таким образом происходит дообучение нейронки уже в процессе работы.

    Либо, использовать поисковые движки (с его возможностями полнотекстового поиска и сопоставления), по типу Elasticsearch или OpenSearch (получая наибольшую вероятность сопоставления).
    Ответ написан
    5 комментариев
  • Как заменить данный кусок кода на более универсальный?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Если я правильно понял, то:
    def check_message(message, keywords):
        for word in keywords:
            if word in message.text.lower():
                return True
        return False
    
    a = check_message(message, wordse)
    b = check_message(message, wordsg)
    Ответ написан
    1 комментарий
  • Можно ли назначить разделитель для float input?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Можно ли назначить разделитель для float input?

    Нельзя, нужно изменить атрибут type на text.
    хотелось бы чтобы число разделяла не запятая, а точка, пример:
    10,200
    10.200

    Слушаем событие change у input, если видим символ ",", то заменяем на символ ".". Если замен предполагается больше, то лучше использовать imask.
    Ответ написан
    Комментировать
  • Насколько важно с точки зрения SEO иметь платный сертификат OV на сайте?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Насколько важно с точки зрения SEO иметь платный сертификат OV на сайте?

    Не замечал разницы в ранжирование. Насколько я знаю, такие сертификаты нужны в первую очередь крупным финансовым организациям, но не с точки зрения SEO. Цифровые SSL сертификаты. Разновидности, как выбрать?
    Плюс раньше браузеры зелёненьким красивишно делали.

    Раньше да, но сейчас все стандартизированное "серое".
    Ответ написан
    Комментировать
  • Как полностью удалить сайт из индекса?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Здравствуйте, скрыл сайт из индекса через роботс. но если вбить в поиске сайт все равно находится сссылка на него с пометкой

    Нужно подождать, пока поисковик обновит свою бд.
    Ответ написан
    Комментировать
  • Ведётся ли здесь статистика кликов "Отметить решением"? Если да, то каков процент тех вопрошающих, кто НЕ делает это?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Ведётся ли здесь статистика кликов «Отметить решением»?

    Нет, но можно накатить отличное расширение Toster-Comfort, появится процент решений и многое другое. Обезьян можно добавлять в ЧС, но не хватает функции скрытия их вопросов, а так же, удаляю ответы без реакций (предположительно, ответ не помог сообществу).
    Но как мне кажется, куда чаще это происходит из-за наплевательского отношения к статистике и обратной связи. Ответ дан, прочитан, принят к сведению, и гуд-бай! А куда-то там кликать никто никого не обязывал.

    В целом, согласен (исключая новеньких, которые не понимают, зачем нужны эти кнопки). Стараюсь не отвечать на вопросы, если процент решения меньше 40% и самих вопросов несколько десятков.
    мало кто пользуется этой возможностью.

    Пользуюсь постоянно (вне куратора тега).
    может, можно сообразить какой-нибудь способ принуждения?

    Куратор тега может отметить вопрос решением, но автор вопроса все равно может снять решение.
    Ответ написан
    Комментировать
  • Как вывести колонку с определенной информацией sql?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. SELECT.
    2. FROM.
    3. WHERE.
    SELECT Id, Имя, Алгебра, Физика, Химия, История
    FROM marks
    WHERE Id = 1
    Ответ написан
    Комментировать
  • Как проверить если сообщение содержит фразу в vk_api python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    - Подписка на событие User Long Poll API.
    - Для ответа на сообщение используйте метод messages.send, передав при необходимости id сообщения, на которое нужно ответить.
    - Ну и обычное условие на проверку подстроки в строке.
    Ответ написан
  • Локатор не находит элемент на сайте, хотя набран верно, пробовал разные варианты, не помогает, в чём проблема?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Найти элемент (find_element_by...) shadow-root.
    2. Получить элемент JS скриптом (execute_script) из п1.
    3. Найти нужные элементы из п2. и делать с ними всякое.
    Ответ написан
    Комментировать
  • В чем разница zennoposter и python + selenium?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Из за периодических банов аккаунтов от твиттер, поступило предложение переписать все на zennoposter-е

    А Вы самостоятельно попробуйте, настройте базовые "движения" и сопоставьте количество банов с самописной реализацией.
    если ли в зеннопостер что либо из коробки, что дает меньшую детектируемость сайтами факта использования автоматизации, по сравнению с python+selenium

    Есть, связка python + selenium + undetected-chromedriver.
    Ответ написан
    Комментировать
  • Почему при парсинге страницы с погодой выдает None?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Почему при парсинге страницы с погодой выдает None?

    Выберите то, что Вам больше понравилось:
    - requests парсит первый ответ сервера, а там сайт на реакте с динамической загрузкой части контента.
    - Запрос отправляется без заголовков и Вас блочит примитивная защита.
    - Вы попадаете на капчу, т.к. request видно издалека.
    Ответ написан
    Комментировать
  • Как переписать код на более современный JS?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Подскажите пожалуйста как переписать код на более современный код JS.

    Зачем?
    нашел такой код он работает, при клике добавляет 2 динамических класса на 2 разных блока

    Не добавляет, а переключает.
    но пишут на форуме что код устаревший

    На заборе пишут, что пора прыгать из окна.
    Как исправить?

    addEventListener()
    Ответ написан
    Комментировать
  • Selenium, как найти элемент (поискового запроса)?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    У них поиск реализован во фрейме, соответственно необходимо переключиться на этот фрейм и уже затем взаимодействовать внутри него с элементами.

    На python это будет выглядеть примерно так:
    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = webdriver.Chrome()
    
    try:
        driver.get('https://dzen.ru/')
    
        iframe = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, "iframe.dzen-search-arrow-common__frame"))
        )
    
        driver.switch_to.frame(iframe)
    
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, "input.arrow__input.mini-suggest__input"))
        )
    
        print(element)  # <selenium.webdriver.remote.webelement.WebElement (session="5e3642980c7d8fcb1b687f3c9a716998", element="f.15CF8DCC914EA871801192FF570A26AF.d.A418C847E39359367688E91E0850A734.e.5")>
    
        element.send_keys("Найдено!")
    
        time.sleep(20)
    
    finally:
        driver.quit()


    660eae28c59d0142362756.png
    Ответ написан
    2 комментария
  • С какого количества записей индексация имеет смысл?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    С какого количества записей индексация имеет смысл?

    С того момента, когда планировщик начал показывать приличную разницу, как только получаете прирост - используйте индексацию, не получаете - не используйте.
    Сделал выборку по определенному имени, вышло 75-90 мсек.
    SELECT name FROM users WHERE name='Mike';
    Добавил индекс CREATE INDEX name_idx ON users (name);
    Выборка так и осталась в пределах 75-85 мсек.

    Вы сами задали вопрос и сразу же ответили на него...
    Ответ написан
    Комментировать
  • Как переопределить класс в WP?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Наследованием и переопределением?
    class My_ReviewsListTable extends Automattic\WooCommerce\Internal\Admin\ProductReviews\ReviewsListTable {
        public function get_review_count($product_id) {
            $args = [
                'post_type' => 'product_review',
                'post_status' => 'publish',
                'meta_query' => [
                    [
                        'key' => 'custom_field',
                        'compare' => 'NOT EXISTS',
                    ],
                ],
                'fields' => 'ids',
            ];
    
    
            if($product_id) {
                $args['meta_query'][] = [
                    'key' => '_product_id',
                    'value' => $product_id,
                    'compare' => '=',
                ];
            }
    
            $query = new WP_Query($args);
            return $query->found_posts;
        }
    }
    Ответ написан
    1 комментарий
  • Как выполнять запросы в БД одновременно?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    какие локальные (которые в одном файле) базы данных это поддерживают?

    1. Можно использовать sqlite3, но нужно будет настроить очереди на взаимодействие с бд, либо использовать sqlalchemy, который имеет поддержку пула соединений.
    2. Другие файловые бд не вижу смысла использовать, т.к. скорее всего настройка таких не популярных бд будет сложнее, чем п1.

    Как использовать sqlite python в многопоточности?
    Ответ написан
    2 комментария
  • Как убрать кнопку "Добавить в корзину", если цена равна 0?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    https://wordpresslab.ru/e-commerce/huki-straniczy-...
    Как вариант, вначале использовать хуки woocommerce_single_product_summary и woocommerce_after_shop_loop_item, и по условию, удалять события woocommerce_template_single_add_to_cart и woocommerce_template_loop_add_to_cart:
    function test() {
        global $product;
    
        if($product->get_price() == 0 || $product->get_price() == '') {
            remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 99);
            remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10);
        }
    }
    
    add_action('woocommerce_single_product_summary', 'test', 99);
    add_action('woocommerce_after_shop_loop_item', 'test', 99);
    Ответ написан