2014-02-27 118 views
2

我試圖從一些網站上抓取數據。對於幾個網站它似乎都很好,但對於一個網站,它似乎無法獲得任何HTML。這是我的代碼:簡單DOM file_get_html什麼都不返回

<?php include_once('simple_html_dom.php'); 

$html = file_get_html('https://www.magiccardmarket.eu/?mainPage=showSearchResult&searchFor=' . $_POST['data']); 

echo $html; ?> 

我正在使用ajax來獲取數據。當我在js中記錄返回的值時,它完全是空的。

難道這是因爲這個網站在https上運行嗎?如果是這樣,有什麼辦法可以解決它嗎? (我試過改變了網址爲http,但我得到了相同的結果)

更新:

如果我的var_dump的$ HTML變量,我得到布爾(假)。

我的PHP錯誤日誌中這樣說:

[27月2014年22點20分五十秒歐洲/阿姆斯特丹] PHP的警告:的file_get_contents(http://www.magiccardmarket.eu/?mainPage=showSearchResult&searchFor=tarmogoyf):未能打開流:HTTP請求失敗! HTTP/1.0 403 /Users/leondewit/PhpstormProjects/Magic/stores/simple_html_dom.php禁止 上線75

+0

只需嘗試標準調試。也許有錯誤。嘗試啓用error_reporting或檢查錯誤日誌。嘗試echo'ing別的''而不是'$ html'來看看你是否得到任何結果。此外,也許嘗試'var_dump($ html);'而不是隻是回聲它。 –

+0

用反饋更新了我的問題。另外,如果我回顯其他東西(即一個字符串),我會得到一個正常的結果。 – Leon

+1

'403 Forbidden'錯誤代碼是從您嘗試聯繫的服務器(magiccardmarket)發送的,通常在您請求的頁面需要登錄時發送。他們可能阻止來自不是瀏覽器的用戶代理的自動請求。你可以嘗試改變你的用戶代理,但這真是一個猜測。如果是這種情況,他們會阻止它,原因很可能是他們不希望人們濫用其網站。 –

回答

4

這是你的用戶代理的file_get_contents默認不發送一個,所以:

$url = 'http://www.magiccardmarket.eu/?mainPage=showSearchResult&searchFor=tarmogoyf'; 
$context = stream_context_create(array('http' => array('header' => 'User-Agent: Mozilla compatible'))); 
$response = file_get_contents($url, false, $context); 
$html = str_get_html($response); 
echo $html; 
+0

這是有效的!謝謝! – Leon