我现在完全迷路了,这是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);
答案 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对象。再次感谢所有如此迅速答复的人。