Доброго времени суток.
Делаю парсер html страниц.
Данные будут переноситься с сайта в базу данных. Видов страниц - 5. Всего необходимо будет обработать от 20000 до 100000 страниц, точное количество будет определяться в процессе работы.
Из-за большого объема данных, парсинг будет проходить в 2 этапа: сначала страницы сохранятся на жесткий диск, потом уже осуществляется их парсинг. Данные из html извлекаются при помощи xpath запросов.
На самом сайте страницы формируются, конечно, автоматически, но все же, из-за их большого количества, есть опасение, что структура какой-то части из них может отличаться от всех. Причем, предугадать, какие это могут быть отличия, невозможно.
Хотелось бы 100%-ной надежности переноса данных с сайта в базу без искажений, и протестировать свой парсер на способность обеспечить это.
Пока вижу следующие способы:
1) xpath запросы делать максимально подробными и конкретными, тогда можно будет сделать так, чтобы при малейшем изменении структуры программа хотя бы прекращала бы работу с сообщениями о причине. То есть, например, вместо:
//td[@class="myclass"]
делать что-то вроде:
//ul[@class="class1"]/li[@class="class2"]/table[@class="class3"]//td[@class="myclass"]
2) Написать второй парсер, работающий совершенно по-другому, например, при помощи регулярных выражений. И сравнивать данные, полученные первым парсером с помощью xpath и вторым - с помощью регулярок. Соответственно, если данные совпадать не будут - значит, либо ошибка в каком-то парсере, либо попались страницы с изменениями в структуре.
Ну и, собственно, возникают вопросы: помогут ли названные меры и как еще можно обеспечить вышеобозначенную надежность и как можно ее протестировать.