Twitt
@Twitt

Как получить ВСЕ ссылки встречающиеся на сайте с помощью нативного PHP?

Есть задача:
дается на вход линк на сайт, скрипт ходит по всем ссылкам, и должен зайти на каждую ссылку получив первый абзац текста. То есть, если мы заходим на новостной сайт, сначала заходим на главную, со временем скрипт заходит на одну из статей, если внутри статьи есть ссылка на другую статью - должны зайти на другую статью, и т.д. Также нужно понять, если ссылка ведет не на этот домен, (а куда то например на инстаграм), то эту ссылку игнорить. Все это с нативным PHP, без библиотек.
Собственно, получить все ссылки с определенной страницы и получать инфу из тех ссылок я смог (юзаю нативный DOMDocument). Но вот ходить постоянно по всем ссылкам - тяжеловато. Их потенциально может быть миллионы, если это новостной сайт. Также не совсем понимаю, как проверять что это ссылка этого домена? Вечно проверять host через parse_url? А если путь без домена в статье?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
Но вот ходить постоянно по всем ссылкам - тяжеловато.

Параллель запросы, используя multi_curl. Если этого недостаточно, тогда очередь (например RabbitMQ или попроще Gearman) и обрабатывающие ноды.

Их потенциально может быть миллионы, если это новостной сайт.

Да, может быть. Поэтому тебе надо какая-то таблица, примерно в таком формате
id - int
url - text
url_hash - char(32), unique
parsed - tinyint
в которой будешь хранить все url и их статус парсинга, за уникальность будет отвечать url_hash = md5(url)

Также не совсем понимаю, как проверять что это ссылка этого домена? Вечно проверять host через parse_url? А если путь без домена в статье?

Если путь без домена, то и проверять не надо, ссылка принадлежит этому домену
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы