Автоматически предоставлять ответ на HTML-форму на стороне сервера с помощью PHP

Я создаю приложение, которое извлекает данные с веб-сайта и отображает их в своем приложении. Я использую PHPQuery для извлечения данных в своем коде на стороне сервера.

Однако одна страница содержит форму .asp с двумя выпадающими меню. Мне нужно выбрать параметр в обоих из них, а затем проанализировать полученный html. Мне нужно сделать это на стороне сервера, поэтому javascript не подходит.

Как я могу это сделать? Можно ли это сделать с помощью PHPQuery или требуется какая-то другая технология?

Рассматриваемая страница: http://www.bput.ac.in/exam_schedule_ALL.asp


person Shantanu Paul    schedule 14.06.2015    source источник
comment
Нет ответа, но поставлю минус. Верно?   -  person Shantanu Paul    schedule 14.06.2015
comment
Я предполагаю, что голосование против было связано с отсутствием кода - вы не показали, что уже пытались решить проблему.   -  person PiotrWolkowski    schedule 14.06.2015
comment
Потому что я не нашел ничего, что могло бы решить проблему. Мне нужна отправная точка. Даже поиск в гугле ничего не дал.   -  person Shantanu Paul    schedule 14.06.2015
comment
Это достаточно справедливо. Я не говорю, что отрицательный голос был оправдан. Лично я думаю, что это правильный вопрос.   -  person PiotrWolkowski    schedule 14.06.2015
comment
вы получаете мой голос «за», некоторые люди готовы только проголосовать против, потому что я ловил simialer и хотел бы услышать мнение других по этому поводу.   -  person maytham-ɯɐɥʇʎɐɯ    schedule 14.06.2015
comment
Вы спрашиваете мнения о том, какую библиотеку использовать, а это нет-нет.   -  person pguardiario    schedule 15.06.2015
comment
Возможный дубликат: stackoverflow.com/questions/17448439/screen-scraping-js -страница   -  person Quentin    schedule 16.06.2015
comment
Здесь особо нечего делать. У вас есть страница, на которую вы заходите, отправляя форму. Вам просто нужно выяснить, какой запрос делает форма (т. е. какие поля/значения, какой URL и какой метод) и воспроизвести этот запрос.   -  person Quentin    schedule 16.06.2015
comment
@ShantanuPaul Пожалуйста, проверьте мой ответ ниже и посмотрите, понял ли я суть того, что вы ищете, без необходимости погружаться в другие технологии. Понятия не имею, почему за него проголосовали в течение 1 секунды после публикации. Даже я не могу читать так быстро.   -  person MyStream    schedule 16.06.2015


Ответы (2)


Поскольку вы используете PHP и phpQuery, я предлагаю вам также попробовать cURL.

Изучите, что форма отправляет через JavaScript, и воспроизведите это через cURL. Сделайте это, чтобы получить формат опубликованных (предполагаемых) данных, которые затем можно реплицировать в запросе cURL на те же конечные точки. JavaScript не потребуется, и вы можете получить те же результаты, которые вам нужны. В этом случае вам не понадобится пункт, упомянутый далее.

В качестве альтернативы, если у вас есть браузер, такой как webkit, phantomJS и т. д., вы можете написать сценарий автоматизации для выполнения этих шагов и возврата результатов в зависимости от того, что именно вам нужно вернуть. См. более полные примеры здесь: https://stackoverflow.com/a/17449757/573688, как другие предлагают вам это сделать. . ПРИМЕЧАНИЕ обычно в этом нет необходимости, если вам просто нужно эмулировать запросы POST.

Это незакодированный ответ, потому что не совсем понятно, какое направление поможет вам больше всего.

person MyStream    schedule 16.06.2015
comment
Я впечатлен, как вы получаете -1 сразу после публикации? - person MyStream; 16.06.2015
comment
Я добавил URL-адрес на страницу, которую мне нужно обработать в вопросе. Пожалуйста, посмотрите на это и, если возможно, предоставьте какое-либо конкретное решение. - person Shantanu Paul; 17.06.2015
comment
Привет @ShantanuPaul. Если вы откроете вкладку сети в Chrome или Firefox, вы увидите параметры сообщения и ответ. Если вы используете cURL в php для отправки сообщения и захвата ответа, вы можете создать детали для каждой возможной комбинации, просто перебирая все комбинации первого и второго раскрывающегося списка. Более подробно изучите cURL с помощью PHP, и вы увидите, как это собрать. - person MyStream; 18.06.2015

  1. На странице работает JavaScript, который должен сделать AJAX-запрос к серверу и передать выбранное значение из обоих SELECT.
  2. Сервер получает AJAX-запрос, выполняет запрос по правильному адресу (можно использовать phpQuery) и печатает ответ (получает ответ на AJAX-запрос).
  3. JavaScript на странице получает ответ на запрос AJAX и выполняет затронутые действия.
person Alexey Rytikov    schedule 16.06.2015
comment
Вопрос в том, как сделать запрос с сервера. т. е. как вы делаете шаг 2 этого ответа. - person Quentin; 16.06.2015
comment
Основная часть вопроса заключается в том, что мне нужно выбрать параметр в обоих из них, а затем проанализировать полученный html, к которому вы вообще не обращаетесь. - person Quentin; 16.06.2015
comment
Как вы отправляете запрос ajax программно, то есть без необходимости выбора пользователем опции? - person Shantanu Paul; 17.06.2015