2015-05-06 5 views
3

Я создаю программу, которая сбрасывает веб-сайт. Он просматривает весь веб-сайт и использует только навигационные меню верхнего и нижнего колонтитула с этого веб-сайта, а затем вставляет новые html-теги (div, p, table и т. Д.) Между меню заголовка и нижнего колонтитула.Как я могу очистить веб-сайт только для навигационного меню

Я ищу некоторые идеи о как раздеть только меню заголовка и колонтитула нав, а также добавить код между двумя.

Я использую HTML Agility Pack и работал над несколькими методами.

Метод 1:

В большинстве случаев, верхний и нижний колонтитулы навигации по меню в основном ссылки, и имеют очень мало текста. Я использовал пороговую переменную, что было отношением текста к ссылкам. Если отношение text: links для узла равно меньше порога, узел будет считаться узлом меню, а он будет сохранен. Любой узел, чей текст: ссылки был больше , пороговое значение будет удалено.

Метод 1 работал на некоторых сайтах, но не для других, поэтому я бросил его.

Метод 2:

Я искал каждый узел атрибута ид или класс, который включал или «меню» «нав». «n», «a», «v», «m», «e», «n», «u» могли быть в верхнем регистре или в нижнем регистре , а «nav» и «menu» могли быть окружены любая комбинация символов. Таким образом, он будет включать в себя классы id и , такие как «bottomNav», «navRight1», «LeftMenu2» и т. Д. Если идентификатор или класс содержит либо «nav», либо «menu», узел будет сохранен. Если атрибуты узла не содержали ни одного из этих терминов, либо любой из потомков узла не содержал ни одного из этих терминов, узел был бы удален.

Опять же, метод 2 работал на некоторых сайтах, но не для других.

Для сайтов, на которых работал любой из этих методов, я все еще не мог поместить новый HTML-код между двумя меню, потому что я не мог сказать, где закончилось меню заголовка, и где началось меню нижнего колонтитула ,

Я просто ищу другие идеи о том, как очистить только меню навигации верхнего и нижнего колонтитула с веб-сайта и вставить новый html-код между ними.

ответ

1

Другие, чем поиск конкретных элементов или классов элементов (header, nav ...), вы можете попытаться взглянуть на проблему по-другому:

  • первый, выборки и разобрать два (или более) страниц с каждого веб-сайта, предпочтительно проверяя, что они существенно различаются (но не полностью);
  • тогда, сделайте diff (от DOM, желательно) и сохраните только общую структуру.

Эта общая структура должна состоять в основном из заголовков, нижних колонтитулов, навигаторов и других элементов, более или менее постоянных на каждом веб-сайте.

Последним шагом может быть просмотр этой общей структуры для небольших промежутков, вызванных верхними колонтитулами, которые варьируются в зависимости от контекста, в отличие от больших зазоров, вызванных различным (основным) содержимым, и очищают их возможные значения от самого большого набор страниц, которые вы можете получить с каждого веб-сайта.

 Смежные вопросы

  • Нет связанных вопросов^_^