Toapi 正式发布 - 再也不愁没有数据!

2017-12-26 17:26:38 +08:00
 prasanta

Toapi - 再也不愁没有数据!

Github: https://github.com/gaojiuli/toapi

进入 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"
        }
    ]
}

Toapi 是一个用Python编写的开源项目,若你有特殊的功能需求,可以自己定制,我们为你提供完整的生态:

使用 Toapi

让我们看下面这个简单的例子 - 仅仅是演示 目标网站是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)

6755 次点击
所在节点    Python
32 条回复
wuqiangroy
2017-12-26 17:31:35 +08:00
自顶一下,可以说是非常好用了。
cls1991
2017-12-26 17:35:59 +08:00
prasanta
2017-12-26 17:45:06 +08:00
@cls1991 性质一样么?
xiaozizayang
2017-12-26 17:49:31 +08:00
将网站转化为一个 api 服务
ruter8
2017-12-26 17:57:33 +08:00
实际使用过用来开发了一个下厨房的 API,开发效率极高,趁正式版发布把自己用 toapi 写的项目也完善了一下

传送门: https://github.com/ruter/xiachufang-api
GooMS
2017-12-26 18:38:38 +08:00
这个增量是体现在 API 上的
Aether
2017-12-26 18:43:01 +08:00
这个服务是完全跑在本地的吗?
ctsed
2017-12-26 18:49:39 +08:00
需要登录,或者 post 操作呢
prasanta
2017-12-26 19:00:41 +08:00
@ctsed 自定义路由即可,app 基于 flask
fe619742721
2017-12-26 19:00:46 +08:00
看看,感觉挺好玩的
prasanta
2017-12-26 19:03:37 +08:00
@Aether 可以部署到任何地方
kingcc
2017-12-26 19:07:13 +08:00
低成本的聚合 api,赞一下
wujunze
2017-12-26 19:17:54 +08:00
顶 又可以愉快的开发小程序了
GreatMartial
2017-12-26 19:27:25 +08:00
赞一个,学习一下
prasanta
2017-12-26 22:10:48 +08:00
@wujunze 又有什么好点子
wangkai123
2017-12-26 22:13:06 +08:00
用过楼主的 django 脚手架,赞哈哈哈
masterjason
2017-12-26 22:42:39 +08:00
想加入!从来没在 github 里加入过组织啊。selenium 和 flask 都会!楼主看我
wzhndd2
2017-12-27 00:09:43 +08:00
数据有版权问题吗?
prasanta
2017-12-27 08:31:05 +08:00
@wzhndd2 你自己通过框架获取的数据,并不是框架提供的
beginor
2017-12-27 08:33:20 +08:00
这个好,已经 star

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/417801

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX