Как очистить содержимое сайта (* КОМПЛЕКС * iframe, отправка javascript) - PullRequest
1 голос
/ 20 сентября 2011

Раньше я занимался очисткой веб-страниц, но это никогда не было таким сложным. Я хочу получить информацию о курсе со школьного сайта. Однако вся информация о курсе отображается в кошмаре веб-скребка.

Во-первых, когда вы нажимаете URL «Расписание занятий», он сначала направляет вас через несколько других страниц (я полагаю, чтобы установить куки и проверить другую хрень).

Затем он, наконец, загружает страницу с iframe, который, видимо, любит загружать, только если он загружен с веб-страницы учреждения (например, arizona.edu).

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

Этот запрос мне особенно трудно повторить. Я использовал PHP и curl, чтобы симулировать браузер, посещающий начальную страницу, собрать правильные файлы cookie и тому подобное. Но я думаю, что у меня есть проблема с заголовками, которые отправляет моя функция curl, потому что она никогда не позволяет мне выполнять какие-либо запросы после загрузки начальной «формы поиска».

Любая помощь будет потрясающей ...

http://www.arizona.edu/students/registering-classes -> «Расписание занятий»

Или просто здесь: http://schedule.arizona.edu/

Ответы [ 3 ]

3 голосов
/ 20 сентября 2011

Если вам нужно очистить сайт с интенсивным использованием JS / AJAX - вам нужно что-то более мощное, чем php;)

Во-первых - это должен быть полноценный браузер с возможностью выполнения JS, а во-вторых - там должно бытьбыть немного API для автоматического просмотра.

Предполагая, что вы ребенок (кому еще нужно было бы проанализировать школу) - попробуйте Firefox с iMacros .Если вы более опытный ветеран - посмотрите в сторону Selenium.

3 голосов
/ 10 августа 2013

Раньше я отбрасывал много страниц с помощью JS, фреймов и тому подобного.Я использовал PhantomJS в качестве безголового браузера, который позже обернул оболочкой PhantomCurl .Оболочка - это скрипт на Python, который можно запустить из командной строки или импортировать как модуль

0 голосов
/ 20 сентября 2011

Вы уверены, что вам разрешено очищать сайт?

Если да, то они могли бы просто дать вам простой REST API?

В редких случаях, когда они позволили бы вам получить доступ к данным, но не предоставили бы API, я бы посоветовал установить некоторое программное обеспечение для записи вашего взаимодействия HTTP с веб-сайтом, например, wireshark, или какой-нибудь HTTP-прокси, но это Важно, чтобы вы получили все детали HTTP-запросов, записанных. После того, как у вас это получится, проанализируйте его и попробуйте воспроизвести до последнего бита.

Среди возможных дел может оказаться, что в какой-то момент времени сервер отправит вам сгенерированный javascript, который должен быть выполнен клиентским браузером, чтобы перейти к следующему шагу. В этом случае вам нужно будет разобраться, как разобрать полученный JavaScript, и выяснить, как двигаться дальше.

Также хорошей идеей было бы не запускать все ваши http-запросы в пакетном режиме, поместите несколько случайных задержек, чтобы сервер казался более «человеческим».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...