Background
Foreground
Link Color
Link Visited
Size:
Width:
More ▼
Open Mode
Overlay Original
Replace Original
Font
Arial
Tahoma
Verdana
Georgia
Segoe
Times
Book
Comic
Courier
Trebuchet
Palatino
Lucida
Text Align
Left
Justify
Text Dir
Left to Right
Right to Left
Disable TidyRead
Save Settings
Close
四月 18, 2009 at 10:05 pm · Filed under ruby ·Tagged search, yahoo, yql
在我眼里,yahoo.com 是一个在技术上努力,并锐意进取的公司,从 yahoo.com 开放的众多服务就可以看得出来。 yahoo.com 的这些创意十足的技术人员是 yahoo 的最大资产,也是MS 当初对 yahoo.com 发出收购邀约的主要目标之一。当然yahoo.cn 就另当别论了。
yql 是 yahoo.com 推出的另一项重要的搜索api,yahoo.com 在搜索方面已经有了一些重量级的api,比如说 BOSS 以及 SearchMonkey。 我觉得 yql 对于开发者来说则是另一个惊喜的礼物,通过 yql 的api,开发者就可以通过类似于 sql语法的对internet 上所有的网络资源进行 “查询”。 “查询”的意思就是说,internet 上的所有网络资源相当于一个超级大的数据库 ,通过 yql 的语法,你可以查询到你想要的结果。
yql 的限制非常少,public data 的 access limit 是1000 req/hour, 对于普通的应用来说已经足够了。另外可以通过 yql console 来运行 yql 的测试, yql console 也是学习和了解 yql 语法的最好的地方。
对于yql 来说,有一个另类的做法就是把 yql 当做 crawler 来使用。任何一个website,只要它不禁止 yahoo 爬虫,那么从 yql 里面都可以得到这个website 公开的web pages。
前段时间,我想去抓 aibang.com 的数据,自己写了crawler,后来发现 aibang.com 把我的ip block掉了,于是给自己的crawler 加上了 tor proxy。这样的效果也不好, tor proxy ip 都不知道从哪来的,抓一个 aibang.com 页面都要 1 秒多时间。后来换成使用 yql,省时又省力,问题轻松解决了,因为yql 估计有一堆的服务器帮你去抓数据,aibang.com 还能把这一堆服务器的ip 都 block 掉? 小样。。
如果你要去抓aibang.com的数据,你的yql可以这样写:select * from html where url=”http://www.aibang.com”
如果你只需要网页的一部分数据,你可以给yql加上xpath 解析,比如:select * from html where url=”http://www.aibang.com” and xpath=’//div[@id="weatherUseInMapview"]‘ 。 这样就可以得到 aibang.com首页 的天气预报的详情了。
那么 yql 抓到的数据会不会是cached 的数据? 在我的实践中,yql 抓到的数据都是即时的数据,基本上没有cached。
yql现在已经成为我的工具箱里面的必备工具,希望它能对你也有帮助。