Я использовал cURL для входа на сайт. Естественный вопрос заключается в том, как выполнять клики по кнопкам и, в конечном итоге, выйти из системы. Например.javascript использует функцию click (). Что использует php? Спасибо за подсказки.
Я слежу за книгой о веб-соскабливании. В нем автор входит в свой сайт издателей. Книга устарела и устарела. Более того, он ничего не говорит о выходе из системы. Это издатель: https://www.packtpub.com/
Вы не можете click
кнопку, используя только PHP. PHP не работает так. PHP может загружать HTML-страницу веб-страницы, но он не может выполнять такие действия, как браузер.
Если вы хотите это сделать, вам понадобится безгласный браузер. Безголовый браузер обычно рассматривается как невидимый браузер. Вы можете делать многое, что может сделать обычный браузер. Для этого есть PhantomJS и CasperJS .
Существуют также библиотеки PHP, которые используют PhantomJS. Например, PHP PhantomJS . Лично я никогда не делал этого с PHP, но я регулярно использую PhantomJS и CasperJS.
Альтернативой тому, что вы можете сделать с PHP, является анализ DOM для ссылок или кнопок и репликация HTTP-запроса, который делается при нажатии ссылок / кнопок.
Например, если есть ссылка, которая идет на /contactus
, вы просто создаете запрос GET на эту страницу, используя cURL. Ответ будет исходным кодом и / или заголовками.
В настоящее время я работаю над проектом, который использует CasperJS, PHP и Redis для создания довольно сложного инструмента скрепера / автоматизации / анализа для большой социальной сети.
В качестве побочного примечания некоторые сайты сильно зависят от JavaScript и использование cURL может быть недостаточно. Вы можете обойти это, разобрав файлы / файлы JavaScript и другую другую развитую магию, но поверьте, вы не хотите идти по этому пути. Вот почему я иногда использую CasperJS. Это медленнее, но это все, что у нас есть на данный момент.
Что касается выхода из системы … удалите файл cookie. Готово.
Недавно я опубликовал проект, который дает PHP доступ к браузеру. Получите его здесь: https://github.com/merlinthemagic/MTS , под капотом – это пример PhantomJS, как и другие, этот проект просто обертывает функциональность.
После загрузки и настройки вы просто используете следующий код:
$myUrl = "http://www.example.com"; $windowObj = \MTS\Factories::getDevices()->getLocalHost()->getBrowser('phantomjs')->getNewWindow($myUrl); //select the username input field, in this case it has id=username $windowObj->mouseEventOnElement("[id=username]", 'leftclick'); //type your username $windowObj->sendKeyPresses("yourUsername"); //select the password input field, in this case it has id=passwd $windowObj->mouseEventOnElement("[id=passwd]", 'leftclick'); //type your password $windowObj->sendKeyPresses("yourPassword"); //click on the login button, in this case it has id=login $windowObj->mouseEventOnElement("[id=login]", 'leftclick'); //click on all the buttons you need with this function $windowObj->clickElement("[id=someButtonId]"); $windowObj->clickElement("[id=someOtherButtonId]"); //if you want the DOM or maybe screenshot and any point run: $dom = $windowObj->getDom(); $imageData = $windowObj->screenshot();