Получаю максимум что, так это страничку по этому урлу, с незаполненными полями. А надо то получать следующую страницу, куда попадаем после успешного нажатия submit на вызываемой форме.
Как этого добиться, что я делаю не так?
Тестировал ни на чужих формах и на своей, где точно нет скрытых полей, все равно. Я полагал ,что CURL способна выдать результать нажатия на submit, а не просто качать страницу по указанному адресу..
Спустя 6 минут, 19 секунд (8.06.2009 - 10:55) glock18 написал(а):
lknomad Вы поражаете своей наивностью до глубины души! Странно, что вы не полагаете, что curl сам парсит вывод и пишет в базу все что надо.
Вот вы представьте, что вам дали адрес и сказали идти туда. А потом выясняется, что на самом деле надо было идти по тому адресу, который был написан на бумажке под дверью по тому адресу, на который вас направили. Как-то так... Нормально это?
Спустя 5 часов, 29 минут, 13 секунд (8.06.2009 - 16:24) kirik написал(а):
Цитата (lknomad @ 8.06.2009 - 02:48) |
Я полагал ,что CURL способна выдать результать нажатия на submit, а не просто качать страницу по указанному адресу.. |
И ведь способен!
Тут можно прочитать, как передаются POST параметры с помощью cURL.
Спустя 2 часа, 6 минут, 17 секунд (8.06.2009 - 18:30) lknomad написал(а):
glock18, ну я не буду говориь , чем поражаете Вы.
Я просто не понимаю тогда, зачем нужен CURL. Не просто скачать страницу же.
Я думал, он заполяет форму и возвращает то, что сервер выдаст по сабмиту.
Времени на изучение мало, поэтому решил помучать более опытных товарищей, авось быстрее въеду.
Спустя 2 минуты, 11 секунд (8.06.2009 - 18:32) lknomad написал(а):
Вообще мне надо имитировать броузер - логинится в неий сервис, вводить логин\пароль а потом парсить внутренности.
Спустя 16 минут, 9 секунд (8.06.2009 - 18:49) lknomad написал(а):
kirik, как бы это сделать?
Спустя 1 час, 12 минут, 55 секунд (8.06.2009 - 20:02) kirik написал(а):
Цитата (lknomad @ 8.06.2009 - 10:30) |
Я думал, он заполяет форму и возвращает то, что сервер выдаст по сабмиту. |
Форму должны заполнить вы сами, а курл уже вернет то, что возвращает сервер по сабмиту.
Цитата (lknomad @ 8.06.2009 - 10:49) |
как бы это сделать? |
нужно объявить cURL'у, что мы передаем POST данные через флаг CURLOPT_POST и затем через опцию CURLOPT_POSTFIELDS передавать те поля, которые указанны в форме.
типа:
PHP |
$fields = array( 'field1' => 'value1', 'field2' => 'value2', // ...... ); $ch = curl_init('http://host.com/post.php'); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); $return = curl_exec($ch); curl_close($ch); echo $return; // тут результат |