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 17:31:35 +08:00
自顶一下,可以说是非常好用了。
|
2
cls1991 2017-12-26 17:35:59 +08:00
|
4
xiaozizayang 2017-12-26 17:49:31 +08:00
将网站转化为一个 api 服务
|
5
ruter8 2017-12-26 17:57:33 +08:00 2
|
6
GooMS 2017-12-26 18:38:38 +08:00 via Android
这个增量是体现在 API 上的
|
7
Aether 2017-12-26 18:43:01 +08:00
这个服务是完全跑在本地的吗?
|
8
ctsed 2017-12-26 18:49:39 +08:00
需要登录,或者 post 操作呢
|
10
fe619742721 2017-12-26 19:00:46 +08:00
看看,感觉挺好玩的
|
12
kingcc 2017-12-26 19:07:13 +08:00
低成本的聚合 api,赞一下
|
13
wujunze 2017-12-26 19:17:54 +08:00
顶 又可以愉快的开发小程序了
|
14
GreatMartial 2017-12-26 19:27:25 +08:00
赞一个,学习一下
|
16
wangkai123 2017-12-26 22:13:06 +08:00
用过楼主的 django 脚手架,赞哈哈哈
|
17
masterjason 2017-12-26 22:42:39 +08:00
想加入!从来没在 github 里加入过组织啊。selenium 和 flask 都会!楼主看我
|
18
wzhndd2 2017-12-27 00:09:43 +08:00
数据有版权问题吗?
|
20
beginor 2017-12-27 08:33:20 +08:00 via Android
这个好,已经 star
|
21
Ehco1996 2017-12-27 08:34:08 +08:00 via iPhone
这个真不错!
|
22
qsnow6 2017-12-27 09:02:15 +08:00
可以来个演示站
|
23
omph 2017-12-27 09:03:56 +08:00
是个在线爬虫服务啊
|
24
xzg1993 2017-12-27 09:10:37 +08:00
不太懂其中的原理,很好奇,是可以把别人家的网站 转换成 api 接口吗?? 好神奇
|
25
ruter8 2017-12-27 09:28:12 +08:00
|
26
mrcode 2017-12-27 09:56:01 +08:00
很好,先 star 一波,不过这种好像不能跑动态服务把。
|
28
vimiix 2017-12-27 10:48:32 +08:00
mark
|
29
tflz514 2017-12-27 10:53:12 +08:00
👍
|
30
Kirikora 2017-12-27 15:06:20 +08:00 1
已 star~ 不过感觉看文档还不是很明白用法,这帖子里看的还明了点。。 改天把官方模板看一下
|
32
vimiix 2017-12-28 00:43:55 +08:00 1
恭喜一天斩获 300+star,学习一下
|