#php #symfony #web-scraping #guzzle #domcrawler
Вопрос:
Я создаю скребок для очистки содержимого с помощью сканера guzzle и symfony dom, но я столкнулся с проблемой.
На странице, которую я очищаю, есть несколько серверов Iframe, Они по умолчанию показывают iframe, когда скребок загружает страницу, но для того, чтобы получить другие серверы, ему нужно нажать там кнопки, и поэтому он отражает iframe сервера.
Как мне это сделать?
Комментарии:
1. При создании инструмента для очистки веб-страниц вам необходимо эмулировать браузер. В этом случае нажатие на эти кнопки что-то делает, и вам нужно подражать этому. Может быть, они устанавливают скрытое поле, может быть, они выполняют XHR/выборку, может быть, настоящая КАПЧА. Что бы они ни делали, это каким-то образом закончится как HTTP-запрос, и это то, что вам нужно подражать. Подтяните свои инструменты разработчика и посмотрите, что происходит по проводу.
Ответ №1:
Guzzle не может отображать веб-сайты на Javascript, поэтому он не поддерживает это
Есть два способа обойти это: либо проверить наличие сетевых вкладок и отправить запрос по ссылке ajax, по которой они получают кадры, либо использовать symfony Panther в качестве библиотеки браузера без головы, они поддерживают веб-сайты javascript и даже обходят защиту Cloudflare