2014-02-27 71 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