как определить навигацию (меню) на веб-странице - PullRequest
3 голосов
/ 29 августа 2011

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

В любом случае, у меня есть некоторые проблемы с обнаружением меню. я думаю, что есть 2 способа кодирования веб-навигации:

1. <ul><li><a>Home</a><li><a>Products</a></li>...</ul>
2. <div><a>Home</a><a>Product</a>...</div>

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

Так есть ли у1 лучшая идея, как определять навигацию по веб-страницам?

Ответы [ 4 ]

4 голосов
/ 29 августа 2011

Универсального решения не существует.Вам нужно реализовать некоторые эвристики.Я попробую такое:

  1. получить все страницы сайта с лимитом рекурсии = 1 (например, wget -r -l1 http://example.com/)
  2. для каждой внутренней страницы, сохранить набор внутренних ссылокэта страница
  3. получает пересечение всех наборов.

Таким образом, вы получите постоянный набор внутренних ссылок, которые в большинстве случаев будут «меню» сайта.

2 голосов
/ 29 августа 2011

В HTML4 и XHTML нет стандартного способа написания меню.В HTML5 у вас есть теги <menu> и <nav>, но, как вы пришли к выводу, в более ранних версиях обычно рекомендуется использовать неупорядоченный список.

Я бы, вероятно, написал несколько тестов, ииспользуйте их все параллельно, чтобы попытаться найти меню, например, на основе позиции в документе, структуры и таких вещей, как атрибуты id и class (значения которых часто будут содержать «меню»).

1 голос
/ 29 августа 2011

Не забудьте тег HTML5 <nav>.

0 голосов
/ 29 августа 2011

Добавление к предыдущим ответам, ul или div с class или id, который включает "nav", вероятно, то, что вы тоже хотите.Там нет универсального ответа, хотя.Кроме того, помните о возможности основных и дополнительных навигационных меню (например, верхнего меню и бокового меню или двух горизонтальных меню Stack Overflow вверху страницы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...