Я хочу извлечь данные со страницы с помощью DOMCrawler of Symfony2. Это страница, на которой я хочу получить данные: http://kovv.mavari.be/kalender.aspx
Получить HTML со страницы после POST
Но я хочу это после публикации, когда вы нажимаете «zoek» (никаких параметров в выпадающих меню), это страница, которую я хочу! Теперь у меня есть: $html = file_get_contents("http://kovv.mavari.be/kalender.aspx");
Но, очевидно, он загрузит первую страницу без сообщения. Есть ли способ, которым я могу загрузить страницу с сообщением? или мне нужно сначала сохранить страницу на моем локальном диске?
UPDATE:
Это мой код прямо сейчас:
$post = http_build_query(array(
'ctl00$ContentPlaceHolder1$ddlGeslacht' => 'Heren',
'ctl00$ContentPlaceHolder1$ddlReeks' => '',
'ctl00_ContentPlaceHolder1_ddlDatum' => ''
));
$options= array('http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $post
));
$context = stream_context_create($options);
$html = file_get_contents('http://kovv.mavari.be/kalender.aspx', false, $context);
Но HTML до сих пор не изменился, он по-прежнему первая страница без поста ..
UPDATE 2: Это является тем, что у меня есть сейчас:
$url = "http://kovv.mavari.be/kalender.aspx";
$regs=array();
$cookies = '../src/VolleyScout/VolleyScoutBundle/Resources/doc/cookie.txt';
// regular expressions to parse out the special ASP.NET
// values for __VIEWSTATE and __EVENTVALIDATION
$regexViewstate = '/__VIEWSTATE\" value=\"(.*)\"/i';
$regexEventVal = '/__EVENTVALIDATION\" value=\"(.*)\"/i';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$data=curl_exec($ch);
$viewstate = $this->regexExtract($data,$regexViewstate,$regs,1);
$eventval = $this->regexExtract($data, $regexEventVal,$regs,1);
$postData = '__VIEWSTATE='.rawurlencode($viewstate)
.'&__EVENTVALIDATION='.rawurlencode($eventval)
.'&ctl00_ContentPlaceHolder1_ddlGeslacht=Heren'
.'&ctl00$ContentPlaceHolder1$ddlReeks'
.'&ctl00_ContentPlaceHolder1_ddlDatum'
.'&ctl00$ContentPlaceHolder1$btnZoek:zoek'
;
curl_setOpt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setOpt($ch, CURLOPT_POST, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
$data = curl_exec($ch);
echo $data;
curl_close($ch);
Но я до получения страницы без почты, я что-то упускаю?
Измените форму для 'zoek' на свой собственный скрипт и сделайте завиток оттуда, чтобы получить результаты поиска со своего сайта. –
Возможно, вам также нужно добавить кнопку в сообщение ('ctl00 $ ContentPlaceHolder1 $ btnZoek: zoek')? Помимо очевидного, страница представляет много информации в запросе ('__VIEWSTATE', '__EVENTVALIDATION'), просто посмотрите на нее в браузере. Возможно, есть что-то большее, чем кажется на первый взгляд ... – nietonfir
Пытался добавить btn, но все равно никакого результата :( – nielsv