2014-01-23 159 views
0

我有一個網頁http://dps.kse.com.pk/ticker/inc_ticker_xml.php,我想從表格中的ticker中提取所有的span和anchor標記值。像這個LPCL,11.06等 我試過curl和php的dom文件。它不工作。但我試圖在其他網頁上的腳本,如google.com和yahoo.com它對其起作用,但不在此頁面上。用PHP刮臉網頁

$html = file_get_contents($url); 

$dom = new DOMDocument; 


@$dom->loadHTML($html); 

$links = $dom->getElementsByTagName('a'); 

//var_dump($links); 

foreach ($links as $link){ 

    echo '<a href = "'.$link->getAttribute('href').'">' ; 

    echo $link->getAttribute('href'), '<br>'; 

此代碼適用於其他頁面上不在http://dps.kse.com.pk/ticker/inc_ticker_xml.php頁面上。有沒有辦法取消這個頁面

+0

這是因爲該頁面使用JavaScript生成。你很可能必須刮javascript代碼... – 131

回答

0

從我自己的PHP刮取經驗,我發現一些服務器將拒絕請求,如果沒有設置用戶代理。一旦我設定的用戶代理在捲曲的設置,我的劇本精刮:)

這應有助於: - http://davidwalsh.name/set-user-agent-php-curl-spoof

+0

我試過,但不工作 –

+0

啊好的。你可以嘗試在file_get_contents調用之後回顯$ html,看看它是否從遠程服務器獲取任何東西? – flauntster

+0

是的,我嘗試和var_dump它,你也可以在這個網站上測試 –

0

本網站需要的cookie和JavaScript將被啓用。所以如果你要求網站,你會在html源代碼中得到類似於下面的內容。

setCookie('YPF8827340282Jdskjhfiw_928937459182JAX666', '219.109.39.29', 10); 
location.href = getHostUri(); 

您必須從那裏解析Cookie值,並需要通過如下所示的CURL發送。

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: YPF8827340282Jdskjhfiw_928937459182JAX666=219.109.39.29")); 

之後,你會發現不同的來源,將有更多的JavaScript/AJAX調用。如果需要解析ajax的內容,請跟蹤調用(使用任何網絡協議分析器,如wireshark)。

但是,好運的這個繁瑣的任務:-)