我正在尝试编写一个RSS抓取器,它将下拉一个feed并使用XMLReader(或DOMdocument)来吐出可用标记列表。
我的主机没有启用file_get_contents所以我把Feed拉到一个变量然后使用“从字符串加载”的方式来实例化我的XMLreader或DOMdocument(到目前为止我已尝试过这两种方法)。
当我在我的本地框(我启用file_get_contents)上测试时,我的脚本能够提取XML标记。但是,当我使用cURL时,我会遇到一系列错误。
在使用html_entity_decode之后,我已经尝试过UTF8编码字符串。
我使用的cURL选项是:
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
如果我使用浏览器从Feed中获取文本并将其保存为文件夹,那么我的脚本也可以识别标签。
使用cURL时遇到的错误是解析错误。
所以我的问题是 - 我必须使用哪些设置与cURL才能解析RSS?
答案 0 :(得分:2)
永远不要将file_get_contents()用于远程文件,它非常慢,非常CPU密集,并且不处理重定向,缓存,cookie等,就像你对curl的灵活性一样。
甚至比卷曲更好;更快,更灵活,更少cpu密集使用fsocket ...有很多php类使这很简单,这是我最喜欢的一个: