我想從頁面中提取數據,使用DOMCrawler Symfony 2。這是我想從中獲取數據的頁面:http://kovv.mavari.be/kalender.aspx如何從站點獲取__EVENTVALIDATION和__VIEWSTATE
但是我希望它發佈後,當你點擊'zoek'(下拉框中沒有參數)。這是我想要的頁面!起初我有:$html = file_get_contents("http://kovv.mavari.be/kalender.aspx");
。但顯然這隻會加載沒有帖子的第一頁。
這是我現在有:
$post = http_build_query(array(
'ctl00_ContentPlaceHolder1_ddlGeslacht' => 'Heren',
'ctl00$ContentPlaceHolder1$ddlReeks' => '',
'ctl00_ContentPlaceHolder1_ddlDatum' => '',
'ctl00$ContentPlaceHolder1$btnZoek:zoek'
));
$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);
但從my other Stack Overflow topic,我才知道,我也有送__EVENTVALIDATION和__VIEWSTATE爲好。但我不知道得到它們。我該如何解決這個問題? (對於在谷歌搜索或使一些關鍵的話也將是巨大的!)
這是我現在有:
$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);
但我仍然得到頁無後,我失去了什麼?
有沒有辦法得到這個?因爲我需要一篇文章後的數據。 – nielsv
請參閱http://stackoverflow.com/questions/12786199/access-viewstate-eventvalidation-in-c-sharp – Pawan
有沒有辦法做到在PHP? – nielsv