Парсинг — автоматизированный сбор данных с веб-страниц и предоставление полученных данных в необходимом формате по шаблону.
Любой инструмент парсинга требует первоначального задания ссылок на конкретные страницы, данные с которых нам и надо собрать.
Соответственно, первоначальной задачей будет найти и отфильтровать этот нужный массив ссылок. Расскажем про основные способы.
Методы сбора ссылок с сайта-источника
Паук-сканер
Работает примерно так же, как и роботы поисковых систем: стартовую (как правило, главную) страницу посещает парсер и находит ссылки на внутренние страницы. Далее заходит на них, сканирует, собирает ссылки следующего уровня и добавляет в очередь для обхода. Нужные ссылки отфильтровываются и добавляются в итоговый список. Так происходит до того момента, пока на всех страницах в очереди не будет новых, непосещенных ссылок.
Плюсы: если правильно задать фильтры, не требует вмешательства в процессе.
Минусы: бывают страницы, на которые не ведет ни одной ссылки (брошенные страницы), встречаются битые ссылки. В таком случае есть риск пропустить некоторые страницы.
Карта сайта
Часто расположена по стандартному адресу /sitemap.xml либо похожему. Точный адрес можно узнать в файле /robots.txt.
Следует отличать от карты сайта для посетителей: в государственных, корпоративных порталах считается обязательным разделом, в котором пользователь может быстро понять структуру сайта и попасть в любой раздел напрямую.
Нужная же нам карта сайта предназначена в основном для поисковых систем, откуда последние получают информацию о страницах для индексации, и рекомендациях по периодичности из переобхода.
Плюсы: сразу единым массивом можно достать все ссылки в удобном стандартном формате.
Минусы: администратор сайта-источника может публиковать не все ссылки в карте, выключая видимость целых разделов. Происходит такое нередко, в итоге из процесса парсинга выпадает множество ссылок, в реальности видимых пользователю и доступных ему.
Обход разделов и пагинации
Обходим парсером последовательно каждую страницу раздела, подраздела и страницы пагинации. Собираем ссылки на все найденные товары.
Плюсы: собираем вообще все ссылки, которые видны пользователю.
Минусы: трудоемкий процесс, требующий индивидуального подхода (предварительный анализ структуры каталога, ссылок на пагинацию, подсчет товаров в категории). Иногда сайты запрещают пагинацию дальше какой-то страницы (например, 100-й).
Составление ссылок по шаблону, перебор
Если ссылки представляют собой упорядоченное число, например /tovar-1000001.html, то создание массива таких ссылок не составляет труда. Даже не нужно обращаться к парсингу сайта. Подставляем шаблон перебора от 1 до 10 000 000 и генерируем ссылки в любом табличном редакторе.
Плюсы: простота, быстрота.
Минусы: массивы могут не быть последовательными, а значит, будет теряться время на парсинг несуществующих страниц. К тому же, с точки зрения SEO-оптимизации такие урлы считаются далекими от совершенства, а значит, встречаются на редких сайтах.
Тонкости сбора ссылок, возможные ошибки
Иногда один и тот же товар находится в разных разделах, поэтому имеет разные урлы. Например, /stroitelnye_materialy/klei_pva_001.html и /klei/klei_pva_001.html. В таком случае следует собрать ссылки, но при дальнейшем парсинге исключать дубли по каким-то другим параметрам, например, артикулу.
При поиске ссылок часто бывает сложно отделить ссылки на разделы и ссылки на товары. В таких случаях целесообразно фильтровать ссылки на этапе парсинга по признакам в контенте страницы.
Иногда при подсчете ссылок в разделе (например, количество товаров в товарной группе) ориентируются на счетчики товаров. Зачастую они отображают неверное количество (включают в себя скрытые или отсутствующие товары).
Оптимальные способы сбора ссылок, выводы
Перед началом сбора ссылок по какой-либо методике следует смоделировать весь путь сбора, поняв, работает ли он на 100 %. Иногда начинают собрать ссылки одним методом, и оказывается, что сайт, например, не отдает всю пагинацию (позволяет прокликать только по первым 10 страницам из 100).
Лично мы считаем, что все же переход по всем страницам (раздел, подразделы, пагинация) — самый точный метод сбора. Он позволяет собрать все доступные и видимые пользователю ссылки на товары или страницы.
В остальных же случаях следует руководствоваться здравым смыслом и возможностями сайта-источника 😉