RSS不会在PHP中解析(尝试过file_get_contents,curl和simplexml_load_file)

时间:2019-03-14 14:44:49

标签: php rss simplexml file-get-contents php-curl

我现在完全迷路了,这是URL示例:

file_get_contents('http://adam-wennick.squarespace.com/actor-bro-show?format=rss');

当然,它可以与其他任何URL一起正常工作...但是,尽管它在浏览器中加载得很好,但它为 file_get_contents simplexml_load_file 都返回400。 strong>,虽然它返回200进行卷曲,但是对象为 NULL 。你们中有没有人遇到过类似的事情?

卷曲代码:

$rss = 'http://adam-wennick.squarespace.com/actor-bro-show?format=rss'; 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, $rss); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
$output = curl_exec($ch);

2 个答案:

答案 0 :(得分:1)

<?php

$ch = curl_init("http://adam-wennick.squarespace.com/actor-bro-show?format=rss");

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);

print_r($result);

curl_close($ch);

输出是url的内容

答案 1 :(得分:0)

如果其他人偶然发现这里-如@aynber所提到的,此URL正在使用某种刮擦保护,即使它是RSS,它也应该被刮擦。 :)来Squarespace!

按照@MagnusEriksson的建议,我在 stream context 中使用了 file_get_contents ,然后用 xml_load_string 替换了 xml_load_file :< / p>

$rss = 'http://adam-wennick.squarespace.com/actor-bro-show?format=rss';

$opts = array(
    'http'=> array(
        'method'=>   "GET",
        'user_agent'=>    'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'
      )
);

$context = stream_context_create($opts);
$result = file_get_contents($rss, NULL, $context);
$output = simplexml_load_string($result);

做到了这一点, $ output 现在有了XML对象。再次感谢所有如此迅速答复的人。