为什么simplexml_load_file()不能使用一些xml rss?

时间:2014-11-12 21:10:48

标签: php xml rss

我在一个函数中使用simplexml_load_file(),它适用于每个rss成功 但我对this site的Rss有疑问 例如:

http://www.bignewsnetwork.com/index.php/nav/rss/4a6d634cbccbbfe2

我也无法使用file_get_contents()来获取此页面源代码;

有我的错误:

Warning: simplexml_load_file(http://www.bignewsnetwork.com/index.php/nav/rss/4a6d634cbccbbfe2) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in C:\wamp\www\php\44\xml.php on line 5

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://www.bignewsnetwork.com/index.php/nav/rss/4a6d634cbccbbfe2" in C:\wamp\www\php\44\xml.php on line 5
bool(false)

我如何使用此RSS? 请帮帮我。

1 个答案:

答案 0 :(得分:8)

正如我在评论中所说:

  

HTTP / 1.1 403禁止您无权访问该资源。

但是我可以从浏览器中点击它,因此可能与用户代理(或其尝试验证的其他HTTP头)有关。在这种情况下,您可以使用curl来提取数据并提供您喜欢的任何用户代理(或其他必要的标题)。

$ch = curl_init('http://www.bignewsnetwork.com/index.php/nav/rss/4a6d634cbccbbfe2');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Identify the rquest User Agent as Chrome - any real browser, or perhaps any value may work
// depending on the resource you are trying to hit
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36');


$feed = curl_exec($ch);
$rss = new SimpleXMLElement($feed);