我正试图从某些网站上抓取数据。对于几个网站来说,它似乎都很好,但对于一个网站,它似乎无法获得任何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变量,我得到bool(false)。
我的PHP错误日志说明了这一点:
[2014年2月27日22:20:50欧洲/阿姆斯特丹] 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 :(得分: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;