Toapi - 再也不愁没有数据!
Github:
进入Toapi
你是否有这样的需求,有一个很好的idea,却没有很好的数据来源,好不容易找到相关数据来源的网站,却发现没有API(或许有但需要收费),那么,我可以告诉你, 为此提供了很好的解决方案 ,它可以:
它的最后效果
// 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" } ]}复制代码
- 短暂的开发周期:很少量代码就可以将某个网站构建成你自己的API服务
- 稳健的服务支持:你只需快速地构建以及使用,其它方面就安心地交给
- 自动对数据缓存,提供
MemoryCache RedisCache MemcachedCache
三种缓存方案 - html源文件本地持久化,提供本地以及数据库支持
- 增量更新
- 自定义路由
- 自定义多站组合API
- 自动对数据缓存,提供
- 多样的模板选择:每一个 服务都可以被其它使用者安装,或许你无需编写代码,就可以安装其它服务,随即组合成自己的服务,官方维护了一个模板列表 -
是一个用Python
编写的开源项目,若你有特殊的功能需求,可以自己定制,我们为你提供完整的生态:
- 项目地址:
- 组织地址(欢迎加入):
- 文档地址:
使用Toapi
让我们看下面这个简单的例子 - 仅仅是演示 目标网站是:
from toapi import XPath, Item, Api, Settingsclass 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_pageapi.register(Page)api.register(Post)api.serve()# Visit http://127.0.0.1:5000/news?p=1复制代码
不到四十行代码,你已经拥有了的API服务,介绍下目前官方提供的模板:
- : 百度, Bing, 谷歌, 搜狗等的聚合API
- : One应用的API
- : IT电子书资源API
- : Instagram的API
- : 高清图片网站集合API
- …...
最后
不会停止进步,从简陋的第一版到现在基本功能完善的版本,一个月来我们有近400次commits,其中辛苦不必多说。
我们诚恳地希望开发者们使用 来构建服务,并提出你的宝贵意见,上手 是一件极其简单的事情,我们希望看到 能为开源社区带来一点贡献,能为你减少构建API的麻烦。
Toapi开发团队(, , )