Разбор подкаталогов в документе HTML - PullRequest
0 голосов
/ 10 августа 2011

Я пытаюсь найти существующие подкаталоги на том же сервере, что и указанный сайт, используя PHP.Например, при разборе домашней страницы seoguru.nl мне хотелось бы иметь массив, подобный следующему:

Array
(
    [0] => 'styles'
    [1] => 'scripts'
    [2] => 'images'
)

(это все каталоги, на которые ссылается источник HTML)

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

Другая проблема заключается в том, что внешние сайты, например CDN или просто ссылки на другие сайты, должны быть исключены, но я думаю, что я могу отфильтровать их потом.1009 * Если вам нужна дополнительная информация, пожалуйста, спросите!

1 Ответ

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

Парсинг HTML только покажет вам.Не забывайте, что и CSS, и Javascript могут содержать URL-адреса, которые обязательно должны быть парсерами, отличными от тех, которые вы использовали бы для HTML.

Помимо этого, не используйте регулярные выражения для анализа HTML.Они слишком легко взорвутся тебе в лицо.Определенно используйте DOM в качестве первого и единственного выбора для HTML.Достаточно просто использовать некоторый xpath, чтобы получить теги, которые будут содержать URL-адреса (//*[@src] будет самым простым и охватит большинство вещей, которые вам нужно сканировать).Части JS и CSS, вероятно, будут самыми сложными, поскольку для встроенных в PHP нет стандартных парсеров / манипуляторов.

...