Toapi 是一个能够将任何 web 网站转化为 api 服务的库。当前版本为 2.0 版,完全重新设计了用法,使得代码更加优雅,更加 pythonic。
$ pip install toapi
$ toapi -v
toapi, version 2.0.0
创建 app.py
,复制下面的代码:
from flask import request
from htmlparsing import Attr, Text
from toapi import Api, Item
api = Api()
@api.site('https://news.ycombinator.com')
@api.list('.athing')
@api.route('/posts?page={page}', '/news?p={page}')
@api.route('/posts', '/news?p=1')
class Post(Item):
url = Attr('.storylink', 'href')
title = Text('.storylink')
@api.site('https://news.ycombinator.com')
@api.route('/posts?page={page}', '/news?p={page}')
@api.route('/posts', '/news?p=1')
class Page(Item):
next_page = Attr('.morelink', 'href')
api.run(debug=True, host='0.0.0.0', port=5000)
运行 python app.py
打开浏览器访问 http://127.0.0.1:5000/posts?page=1
你讲获得类似下面的结果:
{
"Page": {
"next_page": "http://127.0.0.1:5000/posts?page=2"
},
"Post": [
{
"title": "Mathematicians Crack the Cursed Curve",
"url": "https://www.quantamagazine.org/mathematicians-crack-the-cursed-curve-20171207/"
},
{
"title": "Stuffing a Tesla Drivetrain into a 1981 Honda Accord",
"url": "https://jalopnik.com/this-glorious-madman-stuffed-a-p85-tesla-drivetrain-int-1823461909"
}
]
}
直接看上面的案例就能很容易理解用法. 目前版本完全开源。