我使用PHP的simplexml_load_file解析了大量的RSS提要,它就像一个魅力。 现在我正在努力为英国“金融时报”的RSS源做同样的事情。我什么时候......
$rss = simplexml_load_file("http://www.ft.com/rss/world");
......我明白了:
Warning: simplexml_load_file(): http://www.ft.com/rss/world:11: parser error : Opening and ending tag mismatch: link line 8 and head in rss.php on line 6
Warning: simplexml_load_file(): oat:left;margin-right:20px;margin-top:3px;width:35px;height:31px;}</style></head in rss.php on line 6
Warning: simplexml_load_file(): ^ in rss.php on line 6
Warning: simplexml_load_file(): http://www.ft.com/rss/world:37: parser error : Opening and ending tag mismatch: input line 37 and li in rss.php on line 6
Warning: simplexml_load_file(): ^ in rss.php on line 6
以及更多警告(大约100个)。
我搜索了Stackoverflow的答案,但我找不到任何似乎适用于这种情况的内容。我在这里缺少什么?
答案 0 :(得分:1)
要使某些网站正常工作,您需要使用HTTP请求设置用户代理。由于PHP中的默认值可能为空(这似乎是隐私明智的设置),您需要为请求设置它:
ini_set('user_agent', "Godzilla/42.4 (Gabba Gandalf Client 7.3; C128; Z80) Lord of the RSS Weed Edition (KHTML, like Gold Dust Day Gecko) Chrome/97.0.43043.0 Safari/1337.42");
$rss = simplexml_load_file("http://www.ft.com/rss/world");
答案 1 :(得分:0)
您的代码在这里适合我。尝试省略LIBXML_NOWARNING & LIBXML_NOERROR
(可以抑制您可能遇到的任何错误),看看它出错了。