Сожрать Symfony, очистить фреймы внутри нескольких серверов

#php #symfony #web-scraping #guzzle #domcrawler

Вопрос:

Я создаю скребок для очистки содержимого с помощью сканера guzzle и symfony dom, но я столкнулся с проблемой.

На странице, которую я очищаю, есть несколько серверов Iframe, Они по умолчанию показывают iframe, когда скребок загружает страницу, но для того, чтобы получить другие серверы, ему нужно нажать там кнопки, и поэтому он отражает iframe сервера.

Как мне это сделать?

Комментарии:

1. При создании инструмента для очистки веб-страниц вам необходимо эмулировать браузер. В этом случае нажатие на эти кнопки что-то делает, и вам нужно подражать этому. Может быть, они устанавливают скрытое поле, может быть, они выполняют XHR/выборку, может быть, настоящая КАПЧА. Что бы они ни делали, это каким-то образом закончится как HTTP-запрос, и это то, что вам нужно подражать. Подтяните свои инструменты разработчика и посмотрите, что происходит по проводу.

Ответ №1:

Guzzle не может отображать веб-сайты на Javascript, поэтому он не поддерживает это

Есть два способа обойти это: либо проверить наличие сетевых вкладок и отправить запрос по ссылке ajax, по которой они получают кадры, либо использовать symfony Panther в качестве библиотеки браузера без головы, они поддерживают веб-сайты javascript и даже обходят защиту Cloudflare