用于读取和保存网页内容的php脚本在某些网站上不起作用

用于读取和保存网页内容的php脚本在某些网站上不起作用,php,Php,我有一个非常简单的脚本,可以在大多数站点上完美地工作,但不是我想要它使用的主站点-下面的代码可以完美地访问示例站点。然而,当我在我想要访问的站点上使用它时,我会得到一个错误 这很有效 <?php $url = "http://www.cambodia.me.uk"; $page = file_get_contents($url); $outfile = "contents.html"; file_put_contents($outfile, $page); ?> 这不起作用 &

我有一个非常简单的脚本,可以在大多数站点上完美地工作,但不是我想要它使用的主站点-下面的代码可以完美地访问示例站点。然而,当我在我想要访问的站点上使用它时,我会得到一个错误

这很有效

<?php
$url = "http://www.cambodia.me.uk";
$page = file_get_contents($url);
$outfile = "contents.html";
file_put_contents($outfile, $page);
?>

这不起作用

<?php
$url = "http://www.livescore.com";
$page = file_get_contents($url);
$outfile = "contents.html";
file_put_contents($outfile, $page);
?>

并给出以下错误

警告:文件获取内容() [function.file get contents]:无法打开流:HTTP请求 失败!在C:\Program文件中找不到HTTP/1.0 404 (x86)\EasyPHP-5.3.8.1\www\Livescore\trust-1-read-page.php,第3行


感谢您的帮助

很可能www.livescore.com正在执行隐藏重定向,该文件的内容太基本,无法捕获

您的服务器上是否安装了
lynx

$page= shell_exec("lynx -source 'http://www.livescore.com'"); 

lynx
是一款全浏览器,可以“绕过”某些重定向。

在常见情况下,您只需对
file\u get\u contents
执行重定向即可:

$context = stream_context_create(
    array(
        'http' => array(
            'follow_location' => true
        )
    )
);

$html = file_get_contents('http://www.example.com/', false, $context);

此站点尝试分析
用户代理
http头,如果找不到,则失败。尝试添加一些
用户代理
标题:

<?php

$context = stream_context_create(
    array(
        'http' => array(
            'header' => "User-agent: chrome",
            'ignore_errors' => true,
            'follow_location' => true
        )
    )
);

$html = file_get_contents('http://www.livescore.com/', false, $context);

echo substr($html, 0, 200)."\n";

试试
http://www.livescore.com/
是的,我尝试过-不好:-)好的,我不知道这是否有帮助,但我尝试了在Stackoverflow上找到的这段代码,它不起作用,但我得到了以下可能有用的错误-我希望HTTP/1.1 301永久移动服务器:nginx Date:Mon,2016年8月29日08:58:20 GMT位置:缓存控制:无缓存内容长度:0连接:closeIt是共享主机,因此我不确定,所以我将尝试并查看thankyouTried,但我不认为lynx已安装-我没有收到错误,但所有尝试的站点的返回字符串均为空:-(适用于除livescore.com外我尝试的所有站点:-(
User agent
livescore
所需的。嗨,副总裁,对不起,我不知道这是什么意思,副总裁,对不起-是的,我明白你的意思。我设法让它部分与curl一起工作,并设置了User agent。然后我还添加了referer,工作得很好-谢谢你的信息和建议。我是stackoverflow新手,所以我不确定该怎么做我接受你的回答或结束问题。谢谢大家:-)