А ты глазами как распознаешь страницу с контактами?
По содержимому. Наличие или отсутствие определенного текста более чем достаточно.
Самый универсальный метод даже там где сайты генерируют контент на js и весь интерфейс гуляет туда сюда, а классы именуют случайно, типа как на ozon и кучи других топовых сайтов, только по содержимому и спасаешься (я еще в анализ включаю координаты элемента на экране, чтобы между элементами можно было задавать вопрос - найди все дивы что справа от элемента с текстом блаблабла
p.s. регулярки это прошлыв век, очень мало сайтов позволят себя так просто анализировать.
Обычно сайт парсят как xml/html с помощью любого парсера на твой выбор и язык (например для php я часто пользовался
simplehtmldom но часто и штатных xml парсеров хватает
ну а если сайт генерируется динамически на js то мне больше нравится инжектить на страницу свой javascript в полноценном браузере