誰かが何かを言ったり「ジャンプ」したりする前に、私は読んだことを言いたい:
- __doPostBack('...'); の背後にあるページをスクレイピングする方法についてのアイデアはありますか?
- DotNetNuke、PHP、curl を使用したリモート ポストバックのシミュレート
- JavaScript ポストバックによる HTML のスクレイピング
- cURL asp.net ページへのデータの投稿
- http://techclimber.blogspot.com.es/2009/03/php-curl-and-aspnet.html
これは私の機能です:
function UolgetHtmlfromAjaxCallback($a_Params,$url) {
$EVENTTARGET = $this->UolgetAtributoEventTarget($a_Params['s_EventTarget']);
$s_smMaster = 'ctl00$cphSite$upModelo|'.$entries['target'];
$VIEWSTATE = urlencode($a_Params['s_ViewState']);
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => 'ct100%24smMaster='.urldecode($s_smMaster).
'&__EVENTTARGET='.urlencode($EVENTTARGET['target']).
'&__EVENTARGUMENT='.urlencode('').
'&__EVENTVALIDATION='.urlencode($s_Eventvalidation).
'&__VIEWSTATE='.$VIEWSTATE.
'&ct100%24txtBuscaNome='.$a_Params['ctl00_txtBuscaNome'].
'&__ASYNCPOST=true'
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$result = curl_exec ($ch);
return $result;
}
は$VIEWSTATE
問題$EVENTTARGET
ありません。 は次の値を持つ配列です。
Array (
[id] => ctl00_cphSite_fichaTecnicaEditorial_rptCarrosFichaTecnica_ctl00_lbtnFichaTecnica
[target] => ctl00$cphSite$fichaTecnicaEditorial$rptCarrosFichaTecnica$ctl00$lbtnFichaTecnica )
このコードを使用して、この Web サイトをスクレイピングしようとしています。
http://comparecar.uol.com.br/Modelo/Volvo-Xc60
そして、私はウェブサイトを取得しますが、車の情報は取得しません。
自分の情報を編集します。
私は改ざんデータを扱っていますが、投稿で異なるパラメーターが使用されていることがわかりました。
ctl00%24smMaster
__EVENTTARGET
__EVENTARGUMENT
__VIEWSTATE
__EVENTVALIDATION
ctl00%24txtBuscaNome
__ASYNCPOST
そして「=」で閉じます