@简叔:
您忙,一句话,我正在做一个个人搜索网站,想把自己的一些数据聚合起来,需要简书上的数据。想问问简书有开放 API 吗?或者有开放 API 的计划吗?
如果您还有时间,容我慢慢细说开放 API 的好处。
优秀的网站都有两套接口
一套是页面,供用户访问;一套是 API ,供程序访问。照顾这帮难缠的用户就够麻烦的了,为什么还有照顾程序的感受?简短地说,页面越是设计精良,越是照顾人的视觉享受,就越阻碍数据的交流。
原本我们只是希望看一段文本,但网站给我们传来了 HTML 5 ,传来了 CSS 3 ,传来了 JavaScript ,人眼是看着舒服了,但程序傻眼了。程序需要的只是「那段文本」。「文本」是皮,HTML, CSS, JavaScript 都只是毛。皮之不存,毛将焉附。API 就是只传输「数据的本体」。而 MarkDown 也正是应这一需求而生的语言。
程序要数据来干什么?很多网站,比如豆瓣,比如微博,本质上做的是数据服务。个人开发者有了数据,可以做二次开发。丰富网站的周边,把社群做大。
不是说这些开发,网站自身做不了,而是很多需求要么还没有大到引起网站开发者重视,要么网站开发者不了解。反过来,这些二次开发作品也可以为网站完善提供思路。
@简叔 ,如果您家网站也是做的数据生意,开放 API 真的值得考虑。
数据是拦不住的
豆瓣是我非常喜欢的一个去处。豆瓣倒是开放 API ,但不支持个人开发者申请 API Key ,而且单 IP 访问有「150 次 / 小时」的限制🚫 作为一个不收费的服务,我不该奢求太多,但数据是拦不住的。我通过抓取网页,还是拿回了自己的数据。但这样极大地增加了服务器的负担(因为网页的数据量远远大于 API ),所以我跑程序之前也很谨慎。
而最重要的是,就算我把豆瓣全扒下来,人们也不可能访问我的「米瓣」,而不是「豆瓣」!
目前,数据的利用是极不充分的
这倒不是网站开发者的问题,而是目前大的社区都是在「AI 时代」之前搭建的,大家还不习惯用「AI 的思维」重新审视数据的价值。
比如:blog 网站,手头既然有那么多优质的文本数据,为什么不去分析下博主的写作风格,检测遣词造句中的翻译腔,提供修改建议呢?
比如:实时消息类网站,为什么不去分析用户的习惯,提供生活建议呢?
比如:摄影网站,为什么不去统计照片的参数,告之用户他们最喜欢的焦段?
比如:晒字帖的网站,为什么不让机器去学习「好字」的风格,给出习作的评分?
……
这之中可能有用户隐私的权限问题,但也反映出数据的价值确实没能真正发挥出来。
P.S. 简叔告我目前没有精力开发 API 后,扭头去扒网页了。顺手写了个简易版的html2markdown()
(仅适用于简书):
class String
def to_markdown
self.gsub(/<code>(.+?)<\/code>/) { "`#{$1}`" }
.gsub(/<sup>.+?\[(\d+)\]<\/a><\/sup>/) { "[^fn#{$1}]" }
.gsub(/<h(\d)>(.+?)<\/h\1>/) { '#' * $1.to_i + ' ' + $2 }
.gsub(/<em>(.+?)<\/em>/) { "**#{$1}**" }
.gsub(/<hr>/, '----')
.gsub(/<li>\n?(.+?)<\/li>/m) { "- #{$1}\n"}
.gsub(/<\/?ol>/, '')
.gsub(/<pre><code>(.+?)<\/code><\/pre>/m) { "\n#{$1.gsub(/^/, ' ')}" }
.gsub(/<img src="(.+?)"\s+alt="(.+?)">/) { '!' + "[#{$2}](http:#{$1})"}
.gsub(/<div class="image-caption">.+?<\/div>/, '')
.gsub(/<div.+?>|<\/div>|<br>|<\/?ul>/, '')
.gsub(/<a href="(.+?)".+?>(.+?)<\/a>/) { "[#{$2}](#{$1})" }
.gsub(/\s*<p>|<\/p>/, '')
.gsub('<', '<')
.gsub('>', '>')
.gsub(/-(.+)\[↩\]\(#fnref(\d+)\)/) { "[^fn#{$2}]: #{$1}" }
end
end