php脚本,用于读取和保存某些网站上无法使用的网页内容

时间:2016-08-29 04:43:37

标签: php

我有一个非常简单的脚本,可以在大多数网站上完美运行,但不能在我希望它使用的主站点上运行 - 下面的代码可以完美地访问示例站点。但是,当我在我想访问http://www.livescore.com的网站上使用它时,我收到错误

这很有效。

<?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);
?>

并给出以下错误

  

警告:file_get_contents(http://www.livescore.com)   [function.file-get-contents]:无法打开流:HTTP请求   失败!在C:\ Program Files中找不到HTTP / 1.0 404   (x86)\ EasyPHP-5.3.8.1 \ www \ Livescore \ attempt-1-read-page.php第3行

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

很可能www.livescore.com正在进行隐藏的重定向,而file_get_contents基本上无法捕获。

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

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

lynx是一个完整的浏览器,可以绕过&#39;某些重定向。

答案 1 :(得分:0)

通常情况下,您可以对file_get_contents说明重定向:

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

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

此网站尝试分析User-agent http标头,如果找不到则会失败。尝试添加一些user-agent标题:

<?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";