В целях извлечения данных запустить «безголовый браузер» и вручную запускать события javascript не будет самым легким делом. Хотя это не невозможно, существуют более простые способы сделать это.
Большинство сайтов, даже AJAX-тяжёлых, можно очистить, не выполняя ни одной строки их кода Javascript. На самом деле обычно проще, чем пытаться выяснить Javascript-код сайта , который часто запутывается, минимизируется и его трудно отладить. Если вы хорошо разбираетесь в HTTP, вы поймете, почему: (почти) все взаимодействия с сервером кодируются как HTTP-запросы, независимо от того, инициируются ли они Javascript, или пользователь щелкает ссылку, или пользовательский код в программе бота, нет никакой разницы с сервером. (Я говорю почти потому, что когда Flash или апплеты вовлекаются, невозможно сказать, куда и куда летят данные; они могут зависеть от приложения. Но все, что делается в Javascript, будет проходить через HTTP.)
При этом можно подражать пользователю на любом веб-сайте, используя специальное программное обеспечение. Сначала вы должны увидеть необработанные HTTP-запросы, отправляемые на сервер. Вы можете использовать прокси-сервер для записи запросов, сделанных реальным браузером на целевой веб-сайт. Существует множество инструментов, которые вы можете использовать для этого: Charles или Fiddler - удобные, наиболее специализированные инструменты для скрининга экрана имеют базовый встроенный прокси, Расширение Firebug для Firefox и Chrome имеет похожие инструменты для просмотра AJAX-запросов ... Вы понимаете.
Как только вы можете увидеть HTTP-запросы, сделанные в результате определенного действия на веб-сайте, можно легко написать программу, имитирующую эти запросы; просто отправьте те же запросы на сервер, и он будет обрабатывать вашу программу так же, как браузер, в котором было выполнено определенное действие.
Существуют разные библиотеки для разных языков, предлагающие разные возможности. Что касается рубина, я видел много людей, использующих механизму для рубина .
Если извлечение данных является вашей единственной целью, то вы почти всегда сможете получить то, что вам нужно, имитируя HTTP-запросы таким образом. Javascript не требуется.
Примечание - Поскольку вы упомянули Facebook, я должен упомянуть, что удаление Facebook специально может быть исключительно трудным (хотя и не невозможным), потому что Facebook имеет меры для обнаружения автоматического доступа (они используют больше, чем просто капчи). ); они отключат учетную запись, если увидят подозрительную активность, исходящую от нее. Это, в конце концов, против их условий обслуживания (раздел 3.2).