Универсальных решений ты не найдешь. Обычно подобное делается примерно так: берешь N сайтов, на основе их пишешь регулярное выражение (1, или несколько), скрипт заходит на все 3000 сайтов, ищет регулярным выражением на главной странице и на /contacts нужную информацю, сайты на которых не находит - в отдельный список. Берешь еще N сайтов из "неудачного списка", пишешь регулярки для них, и так повторяешь процедуру пока не выгребешь все контактные данные. Естественно это все исполнимо, если владеешь в достаточной степени каким-то ЯП, в регулярках ничего сложного нет.