Как собрать ссылки без 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-аудита.