3楼的方案还是有问题。
twitterfeed迟迟不能更新来自论坛帖子的rss。好在它提供检测feed状态的功能。查看报错信息,提示:[feed status: We couldn't find date/time stamps on items. Please make sure your feed contains valid pubDate entries for each post, or select 'based on GUID' in twitterfeed settings.]
折腾了几天,这是头一家明确给出报错信息的。起码让我知道问题出在哪儿。我找几篇rss教程学习rss的文档格式。虽然不懂xml语法,靠html的基础,连蒙带猜也能看明白。而且rss的结构异常简单……然后对照着看论坛帖子rss的源码,其中包含了<pubdate>标签。那么twitterfeed报告找不到<pubdate>的错误,只能是抓取rss文件就不成功,而不是语法解析错误。我换了几家phpwind论坛的rss来测试,都有同样的问题。看来也不是服务器的问题,而跟phpwind的论坛程序有关。
我用twitterfeed的在线检测功能测试论坛帖子rss的地址,第一次读取总是报错,但立刻再读一次就好了。可如果十分钟左右不管它,十分钟之后再读还是报错。估计feedblitz、feedmailer这些网站无法更新来自论坛帖子的rss,也是因为同样的原因。
一时想不明白论坛程序的毛病出在哪里。我考虑另一个方案,不用论坛自动生成的rss,改用第三方网站,把帖子的静态页面抓成rss。昨天找rss2email网站的时候,我看见一些rss烧制网站有这个功能。——何况论坛自动生成的rss并不理想,包含了很多我不需要的链接,稍长一点的帖子又不提供全文输出。用第三方网站的定制服务,可以彻底解决这些问题。我看来看去,找到一家网站feed43.com。可以用定制源码分析的方式,把我需要的网页源码中的变量自动提取出来,生成一个feed。
这就是我用feed43.com抓取的论坛帖子的feed:
http://feed43.com/2584342781276861.xml这是供抓取的源页面:
http://www.kaobanma.cn/doggiegame/simple/index.php?t224.html。这个页面自身是没有rss输出功能的。
我只需要3个变量:发帖人、发帖时间、帖子内容全文。用feed43.com可以完美的定制出一个简洁的rss。
用twitterfeed读取feed43.com生成的feed,没有任何问题。连接很顺利。但feed43的缺点是,它的免费服务每6个小时才生成一次feed,要把频率提高到1个小时生成一次,就得掏钱了。
不过feed43给了我点新的想法:1)把一个静态html页面转成一个rss,原来基础工作就是一个文本批处理啊。那我用别的软件应该也能实现这个功能。不一定非要用网站程序不可。2)写个在线程序来做这项工作,似乎也很简单,其中没有任何复杂的算法。可能麻烦的部分是设定抓取频率等等。用Google App Engine架个站点来做这项工作,我觉得不是很困难,只是我不会Python语言……搞得我有点想自学Python了。3)把一个帖子按需要抓成rss输出之后,如果再结合rss烧制网站提供的过滤功能,似乎可以重新编排、统计和输出帖子。这好像能用来干点新的用途,具体怎么用我还得想一想……
(似乎离我的初衷已经跑题很远了……)