2010-04-25 116 views
4

我試圖從這裏抓取數據:http://mediaforest.biz/mobile/nowplaying.aspx 在頁面中選擇一個站點併發布它然後您將獲得帶有數據的新頁面。但我不能抓住它,我再次獲得相同的頁面。試圖通過捲曲發佈後從一個頁面抓取數據

我用這個代碼:

<?php 
header ('Content-type: text/html; charset=utf-8'); 

$url = "http://mediaforest.biz/mobile/nowplaying.aspx"; 
$referer = ""; 

// headers 
$header[] = "Host: ".parse_url($url, PHP_URL_HOST); 
$header[] = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3"; 
$header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
$header[] = "Accept-Language: he,en-us;q=0.7,en;q=0.3"; 
$header[] = "Accept-Encoding: gzip,deflate"; 
$header[] = "Accept-Charset: windows-1255,utf-8;q=0.7,*;q=0.7"; 
$header[] = "Keep-Alive: 115"; 
$header[] = "Connection: keep-alive"; 

$cookie="cookie.txt"; 
$fp=fopen($cookie,"w+"); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch,CURLOPT_REFERER,$referer); 
curl_setopt($ch, CURLOPT_TIMEOUT, 900); 
curl_setopt($ch, CURLOPT_FAILONERROR, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_HEADER,true); 
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie); 
curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie); 
curl_setopt($ch, CURLOPT_VERBOSE, 0); 

$content=curl_exec($ch); 
echo $content; 

    if(stristr($content,"__EVENTTARGET")){ 
     $array1=explode('__EVENTTARGET" value="',$content); 
     $content1=$array1[1]; 
     $array2=explode('"> 
<input type="hidden" name="__EVENTARGUMENT"',$content1); 
     $content2=$array2[0]; 
     $EVENTTARGET=urlencode($content2); 
    } 

    if(stristr($content,"__EVENTARGUMENT")){ 
     $array1=explode('__EVENTARGUMENT" value="',$content); 
     $content1=$array1[1]; 
     $array2=explode('"> 
<script language',$content1); 
     $content2=$array2[0]; 
     $EVENTARGUMENT=urlencode($content2); 
    } 

    if(stristr($content,"formNowPlaying")){ 
     $array1=explode('method="post" action="',$content); 
     $content1=$array1[1]; 
     $array2=explode('"> 
<input type="hidden" name="__EVENTTARGET"',$content1); 
     $content2=$array2[0]; 
     $nexturl=$content2; 
    } 

//echo $EVENTTARGET." ".$EVENTARGUMENT." ".$nexturl; 

$url = "http://mediaforest.biz/mobile/".$nexturl; 

$fields = "EVENTTARGET=".$EVENTTARGET."&__EVENTARGUMENT=".$EVENTARGUMENT."&MyChannels=0&ViewChannel_Button=Show"; 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch,CURLOPT_REFERER,$referer); 
curl_setopt($ch, CURLOPT_TIMEOUT, 900); 
curl_setopt($ch, CURLOPT_FAILONERROR, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_HEADER,true); 
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie); 
curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 

$content_stage2=curl_exec($ch); 
echo $content_stage2; 
?> 
+1

+1您的Gravatar – Gordon 2010-04-25 20:09:23

+0

謝謝:)關於什麼的問題???我卡住了! – Ben 2010-04-25 21:02:34

回答

0

我沒有與捲曲太多的經驗,我沒有看進去,但乍一看似乎這樣的:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 

需要這個:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

雖然可能是錯誤的。

+0

我已經試過了。它不起作用 – Ben 2010-04-25 19:35:02

1

如果您從第一個請求獲取數據,請嘗試關閉(針對每個請求)。

$content=curl_exec($ch); 
curl_close($ch); 
echo $content; 

$content_stage2=curl_exec($ch); 
curl_close($ch);  
echo $content_stage2; 
+0

我做到了,獲得了相同的結果,也許它沒有關係。 – Ben 2010-04-25 20:04:32