Toapi - 再也不愁沒有資料!
Github: github.com/gaojiuli/to…
進入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"
}
]
}
複製程式碼
- 短暫的開發週期:很少量程式碼就可以將某個網站構建成你自己的API服務
- 穩健的服務支援:你只需快速地構建以及使用,其它方面就安心地交給Toapi
- 自動對資料快取,提供
MemoryCache RedisCache MemcachedCache
三種快取方案 - html原始檔本地持久化,提供本地以及資料庫支援
- 增量更新
- 自定義路由
- 自定義多站組合API
- 自動對資料快取,提供
- 多樣的模板選擇:每一個Toapi 服務都可以被其它使用者安裝,或許你無需編寫程式碼,就可以安裝其它服務,隨即組合成自己的服務,官方維護了一個模板列表 - awesome-toapi
Toapi 是一個用Python
編寫的開源專案,若你有特殊的功能需求,可以自己定製,我們為你提供完整的生態:
- 專案地址:github.com/gaojiuli/to…
- 組織地址(歡迎加入):github.com/toapi
- 文件地址:www.toapi.org/
使用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-search: 百度, Bing, 谷歌, 搜狗等的聚合API
- toapi-one: One應用的API wufazhuce.com/
- toapi-ebooks: IT電子書資源API
- toapi-instagram: Instagram的API www.instagram.com/
- toapi-pic: 高清圖片網站集合API
- …...
最後
Toapi 不會停止進步,從簡陋的第一版到現在基本功能完善的版本,一個月來我們有近400次commits,其中辛苦不必多說。
我們誠懇地希望開發者們使用 Toapi 來構建服務,並提出你的寶貴意見,上手 Toapi 是一件極其簡單的事情,我們希望看到 Toapi 能為開源社群帶來一點貢獻,能為你減少構建API的麻煩。
Toapi開發團隊(@gaojiuli, @howie6879, @wuqiangroy)