我正在尝试使用PHP中的simpleXML来提取RSS提要。
rss网站说,如果你没有正确的用户代理,你将被阻止。
如何设置用户代理?
答案 0 :(得分:2)
您可以使用cUrl检索Feed,然后使用simplexml_load_string函数从包含内容的字符串创建DOM。使用cUrl,您可以通过以下方式设置所需的用户代理:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
$content = curl_exec( $ch );
curl_close ( $ch );
$dom = simplexml_load_string($content);
您可以在此处获得一个好示例和完整代码:http://www.php.net/manual/en/ref.curl.php#93163
答案 1 :(得分:1)
PHP有user_agent
设置,您可以使用以下方式设置(以临时方式):
ini_set('user_agent', 'user_agent_goes_here');
它也在你的php.ini
中(如果你从这里更改它,它将是永久性的)
示例:
//Setting the user agent as Firefox 9.0
ini_set('user_agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20100101 Firefox/9.0');
$xml = file_get_contents($rssfeed);
$simplexml = simplexml_load_string($xml);
答案 2 :(得分:0)
您可以使用CURLOPT_USERAGENT
参数{/ 3}}来执行此操作。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/rss.xml");
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); //$user_agent would contain your agent.
$xml = curl_exec($ch); //xml stored in the variable $xml
curl_close($ch);
?>
答案 3 :(得分:0)
总之?您发送用户代理标头。
答案很长,你需要使用PHP的一种方法来获取HTTP上的内容(可能是curl)来启动连接,发送预期的头文件并下拉你试图以字符串形式访问的XML文件。完成此操作后,使用您选择的XML解析器解析检索到的数据。
例如,要让Curl构成IE 6:
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/6.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)');