Как собрать ссылки без class на страницах категорий: полное руководство

    Владельцы интернет-магазинов и SEO-специалисты часто сталкиваются с задачей выборочного сбора ссылок с определённых страниц. Например, нужно найти все a href без атрибута class на страницах категорий, где body имеет класс catalog-category-view, и только внутри контейнеров before-subcat, after-subcat, category-view и add-cat-info. Разберём, как автоматизировать этот процесс с помощью Python и JavaScript.

    Почему это сложно сделать вручную

    На сайте с 5000 страниц вручную просмотреть каждую невозможно. Даже если вы умеете писать JS-скрипты для одиночных страниц, потребуется инструмент, который обходит все URL из sitemap.xml и выполняет парсинг автоматически. Готовые решения на PHP или Python часто не работают из-за динамического контента или ограничений сервера.

    Автоматизация с помощью Python и Selenium

    Лучший способ - написать скрипт на Python с библиотекой Selenium. Он эмулирует браузер, загружает каждую страницу, проверяет наличие класса catalog-category-view у body и собирает ссылки в указанных контейнерах.

    Пример скрипта

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    driver = webdriver.Chrome()
    driver.get('https://mysite/sitemap.xml')
    # парсим sitemap, получаем список URL
    urls = [...]  # список всех URL
    
    for url in urls:
        driver.get(url)
        time.sleep(2)
        body = driver.find_element(By.TAG_NAME, 'body')
        if 'catalog-category-view' in body.get_attribute('class'):
            containers = ['before-subcat', 'after-subcat', 'category-view', 'add-cat-info']
            for container_class in containers:
                elements = driver.find_elements(By.CLASS_NAME, container_class)
                for elem in elements:
                    links = elem.find_elements(By.TAG_NAME, 'a')
                    for link in links:
                        if not link.get_attribute('class'):
                            print(link.get_attribute('href'))
    driver.quit()

    Как обработать sitemap.xml

    Сначала нужно извлечь все URL из карты сайта. Используйте библиотеку xml.etree.ElementTree или requests с парсингом XML. Отфильтруйте только страницы категорий - у них в теле страницы будет класс catalog-category-view.

    Альтернатива: JavaScript-букмарклет

    Если вы не можете запускать Python-скрипты, создайте букмарклет - небольшую JS-программу, которая выполняется в браузере на каждой странице. Но для 5000 страниц придётся открывать каждую вручную, что неэффективно. Лучше использовать связку Python + Selenium или Scrapy.

    Сохранение результатов в файл

    Чтобы вывести ссылки с группировкой по страницам и классам, модифицируйте скрипт: создайте словарь, где ключ - URL страницы, значение - словарь с классами и списками ссылок. Затем запишите всё в текстовый файл или CSV.

    Пример вывода

    https://mysite/category01
      before-subcat:
        https://mysite/link1
        https://mysite/link2
      after-subcat:
        https://mysite/link3
      category-view:
        https://mysite/link4
      add-cat-info:
        https://mysite/link5

    Частые ошибки и их решение

    • Сайт использует AJAX-подгрузку - добавьте time.sleep или WebDriverWait.
    • SSL-ошибки - используйте опции --ignore-certificate-errors.
    • Блокировка ботов - добавьте случайные задержки и User-Agent.

    Заключение

    Автоматический сбор ссылок без класса на страницах категорий - задача, решаемая с помощью Python и Selenium. Скрипт обходит sitemap, проверяет класс body и собирает нужные элементы. Это экономит часы ручной работы и даёт точные данные для SEO-аудита.

    Часто задаваемые вопросы