
Github: https://github.com/gaojiuli/toapi
你是否有这样的需求,有一个很好的 idea,却没有很好的数据来源,好不容易找到相关数据来源的网站,却发现没有 API (或许有但需要收费),那么,我可以告诉你,Toapi 为此提供了很好的解决方案 ,它可以:
// http://127.0.0.1:5000/pic/?q=coffee { "Pixabay": [ { "img": "https://cdn.pixabay.com/photo/2017/06/21/05/28/coffee-2426110__340.png" }, { "img": "/static/img/blank.gif" } ], "Pexels": [ { "img": "https://images.pexels.com/photos/302899/pexels-photo-302899.jpeg?h=350&auto=compress&cs=tinysrgb" }, { "img": "https://images.pexels.com/photos/34085/pexels-photo.jpg?h=350&auto=compress&cs=tinysrgb" } ] } MemoryCache RedisCache MemcachedCache三种缓存方案Toapi 是一个用Python编写的开源项目,若你有特殊的功能需求,可以自己定制,我们为你提供完整的生态:
让我们看下面这个简单的例子 - 仅仅是演示 目标网站是hackernews:
from toapi import XPath, Item, Api, Settings class MySettings(Settings): web = { "with_ajax": True, "request_config": {}, "headers": None } api = Api('https://news.ycombinator.com', settings=MySettings) class Post(Item): url = XPath('//a[@class="storylink"]/@href') title = XPath('//a[@class="storylink"]/text()') class Meta: source = XPath('//tr[@class="athing"]') route = {'/news?p=:page': '/news?p=:page'} class Page(Item): next_page = XPath('//a[@class="morelink"]/@href') class Meta: source = None route = {'/news?p=:page': '/news?p=:page'} def clean_next_page(self, next_page): return "http://127.0.0.1:5000/" + next_page api.register(Page) api.register(Post) api.serve() # Visit http://127.0.0.1:5000/news?p=1 不到四十行代码,你已经拥有了hackernews的 API 服务,介绍下目前官方提供的模板:
Toapi 不会停止进步,从简陋的第一版到现在基本功能完善的版本,一个月来我们有近 400 次 commits,其中辛苦不必多说。
我们诚恳地希望开发者们使用 Toapi 来构建服务,并提出你的宝贵意见,上手 Toapi 是一件极其简单的事情,我们希望看到 Toapi 能为开源社区带来一点贡献,能为你减少构建 API 的麻烦。
Toapi 开发团队(@gaojiuli, @howie6879, @wuqiangroy)
1 wuqiangroy 2017 年 12 月 26 日 自顶一下,可以说是非常好用了。 |
2 cls1991 2017 年 12 月 26 日 |
4 xiaozizayang 2017 年 12 月 26 日 将网站转化为一个 api 服务 |
5 ruter8 2017 年 12 月 26 日 |
6 3IOhG7M0knRu5UlC 2017 年 12 月 26 日 via Android 这个增量是体现在 API 上的 |
7 Aether 2017 年 12 月 26 日 这个服务是完全跑在本地的吗? |
8 ctsed 2017 年 12 月 26 日 需要登录,或者 post 操作呢 |
10 fe619742721 2017 年 12 月 26 日 看看,感觉挺好玩的 |
12 kingcc 2017 年 12 月 26 日 低成本的聚合 api,赞一下 |
13 wujunze 2017 年 12 月 26 日 顶 又可以愉快的开发小程序了 |
14 GreatMartial 2017 年 12 月 26 日 赞一个,学习一下 |
16 wangkai123 2017 年 12 月 26 日 用过楼主的 django 脚手架,赞哈哈哈 |
17 masterjason 2017 年 12 月 26 日 想加入!从来没在 github 里加入过组织啊。selenium 和 flask 都会!楼主看我 |
18 wzhndd2 2017 年 12 月 27 日 数据有版权问题吗? |
20 beginor 2017 年 12 月 27 日 via Android 这个好,已经 star |
21 Ehco1996 2017 年 12 月 27 日 via iPhone 这个真不错! |
22 qsnow6 2017 年 12 月 27 日 可以来个演示站 |
23 omph 2017 年 12 月 27 日 是个在线爬虫服务啊 |
24 xzg1993 2017 年 12 月 27 日 不太懂其中的原理,很好奇,是可以把别人家的网站 转换成 api 接口吗?? 好神奇 |
26 mrcode 2017 年 12 月 27 日 很好,先 star 一波,不过这种好像不能跑动态服务把。 |
28 vimiix 2017 年 12 月 27 日 mark |
29 tflz514 2017 年 12 月 27 日 |
30 Kirikora 2017 年 12 月 27 日 已 star~ 不过感觉看文档还不是很明白用法,这帖子里看的还明了点。。 改天把官方模板看一下 |
32 vimiix 2017 年 12 月 28 日 恭喜一天斩获 300+star,学习一下 |