web2.0时代关注
如何在web2.0时代关注一个人呢?
这是一个技术课题。。
首先,阐释一下经常遇到的情况。
比如说,XXX同时关注?暗恋?若干个人,可是ta们各自用不同web2.0平台。
比如说一个用hi5, 一个用facebook, 还有plurk,twitter什么的。
更可怕的是国内web1.9(没有协同的我统统称为1.9)人工制造技术壁垒,相互不通。
怎么用最少的代价去关注一大群人(GG、MM)呢?
第一,只要有RSS就很好解决了。
Google提供了与RSS有关的很多应用。比如说,订阅到Google Reader到电脑到手机都可以看。
又比如说,feedburner可以把RSS烧录到facebook/twitter上。facebook和twitter支持的这类应用特别多。。。
总之,有了RSS很好解决。
开一个页面,加入地址栏右边有个橘黄色的图标,一般就有RSS了。
RSS是一种xml文档,用于……
好吧,打住。。
反正这篇不是纯科普文。。。
假如不理解不使用RSS……没什么说的。。。
第二,有时没有提供RSS或者RSS不符合需要怎么办?
比如说cnbeta只提供了摘要输出的RSS。据了解(有几个我认识的人也是)统统只有摘要RSS……为了访问量。。。
那么怎么搞?
介绍一个很好的工具。。。。Yahoo Pipes。!
有关yahoo pipes生成全文摘要的做法 http://xc84.com/how-to-use-yahoo-pipes-create-full-rss-feeds 不仔细写了。。。我也很少做。。。
大概做法就是先Fetch Feed然后For each item去Fetch page那个link然后在里面截断出全文内容,再create 一个feed。。。
应该有倒腾精神的人听这么说应该很快能搞定。。。
也能看出里面能union。所以可以把比如说5个mm的blog的RSS合并成一个feed。
当然,并不是总能一个union了事的。因为你认为是rss的东西可能是另一个标准ATOM。ATOM理论上更优秀更先进也更年轻但是可惜支持的工具不多。
比如说google 导出feed基本上都是atom的。
这样就要先fetch feed然后再create feed搞出一个RSS了。。。
第三,假如,更杯具一点yahoo pipes不支持?
也许你可以看出这才是本文的重点。
也许很多人就此会放弃了。。。
可能的原因有很多。比如说很讨厌的很多网页都是gb2312或者big5编码的yahoo pipes不支持,会输出乱码。
又比如说ISP屏蔽了yahoo的spider。。。。。
但是,不要打退堂鼓,,,,,也许被关注者故意考察你的技术呢!
geek的能力是无限的!
进行一下操作可能需要一台虚拟主机。。。
比如说,我们假设要关注香港天文台hko (www.weather.gov.hk) 但是因为是big5-HKSCS的。所以pipes不支持。。怎么办,手工转码吧。。。。
一开始,我的计划是用php转码:
<?php
$url = "http://www.hko.gov.hk/contentc.htm";
$contents = file_get_contents($url);
$getcontent = iconv("big5", "utf-8",$contents);
echo $getcontents;
?>
但是一直不成功。但是echo “hello world”是成功的。。。
其实这是由于php或者cgi之类的在线技术的时间限制决定的。。。
为了避免php程序大量占用cputime,一般执行时间是有限制的。。默认限制好像是400ms跟apache有关。。。。。可以改,。。。然后呢,,,我想搞这一行的人应该很清楚400ms是什么概念了。。。。
网络延时何止400ms呢!
而且,就算你把400ms改大,比如说10s。也有问题。。网络延时是很难说的,万一超过了10s。。。占用resources不说,,,关键问题是。。。。会返回空白页面,,,,结果很不好,,,于是我们引入缓存机制。。。。
理论上设置一个daemon进程是可能的。。。。但是毕竟搞一个可执行文件还是。。。比较难以修改更新的。。。
或者说,用windows的任务计划,,,好吧我表示,,,非要在server上用win我也没办法。。。
在linux下有很好的定时执行工具和各种命令行的网络工具正适合用。。。。
用cron弄一个任务比如每小时执行
curl http://www.hko.gov.hk/contentc.htm | iconv -f BIG5 -t UTF8 >www_root/1.txt
最后重定向决定的是输出到哪里。。。
然后每小时server会自动去更新。。一般来说shell 命令可以执行比较久。。。用来更新缓存是足够的。,。。
这样我们服务器上有一个最坏情况下是1h前的副本。。
考虑到feedburner和yahoo pipes的延时,1h并不过分。。。
curl是很强大的。curl也可以带其他一些参数,比如带cookie,带user-agent,带post数据。。比如说你要抓取fd的renren网的糟糕状态。。。但是需要登录。。。就可以在一台机子上登录好,把cookie记下来,令curl以带cookie访问。。。。。。
如果特别重要你甚至可以直接server上cron生成RSS。。。不过有一定的技术难度就不在这里讨论了。。。。
所以得到一个结论,就是企图限制自动化工具获取页面是十分愚蠢的。。。事实上spider可以不理会robot,只要页面是公开的就随时可能被抓取存档。。。。比如说如果一些blog经常被censor咗文章可以cron刷一个几分钟一个的缓存。。。。是可能的。。。当然可能要因此付出额外的cpu time'。
|