一 主要特點

二 安裝

toapi 可以通過 pip 安裝:

pip install toapi

三 基本用法

1.創建數據模型

在 toapi 中,每個網頁資源都通過 Item 類定義,您只需聲明需要抓取的字段和其對應的 CSS 選擇器或 XPath。

from toapi import Item, TextField, AttrField

class News(Item): title = TextField(css_select="h1.title") link = AttrField(css_select="a.link", attr="href")

class Meta: source = "https://news.example.com" route = "/news/:id"


2.注冊數據模型

一旦數據模型定義完成,需要將其注冊到 API 服務中,才能啟動并暴露接口。

from toapi import Api

api = Api()api.register(News)

3.啟動 API 服務

調用 run 方法來啟動服務,toapi 會自動啟動一個 HTTP 服務器并監聽請求。

if __name__ == "__main__": api.run()

四 高級用法

1.動態路由

toapi 支持動態路由,您可以在 URL 中使用變量部分。通過 :param 聲明動態路由,例如從 URL 中提取參數。

class Product(Item): name = TextField(css_select="h1.product-name") price = TextField(css_select="span.price") class Meta: source = "https://example.com/product/:product_id" route = "/product/:product_id"

這樣,通過訪問 http://localhost:5000/product/123,API 會提取 URL 中的 product_id 并從網頁中抓取相應的數據。


2.使用中間件

toapi 支持自定義中間件來處理請求和響應。中間件可以用于日志記錄、請求修改、數據過濾等任務。

from toapi.middleware import Middleware

class CustomMiddleware(Middleware): def process_request(self, request): print(f"Request URL: {request.url}")

def process_response(self, request, response): print(f"Response: {response}") api.add_middleware(CustomMiddleware)


這樣,每次請求和響應都會經過 CustomMiddleware 中定義的邏輯。


3.緩存支持

toapi 內置了緩存機制,可以減少頻繁的數據抓取請求,提高效率。可以使用內存緩存或自定義緩存后端。

from toapi.cache import MemoryCache

api.cache = MemoryCache()

通過啟用緩存,toapi 會在首次抓取數據時緩存結果,之后相同的請求將直接返回緩存數據。

五 實際應用案例

1.爬取 GitHub 趨勢

通過 toapi,我們可以將 GitHub 趨勢頁面轉換為一個 API 接口,動態抓取流行的項目和相關信息。

from toapi import Item, TextField, AttrField

class GitHubTrend(Item): name = TextField(css_select="h1.h3.lh-condensed") stars = TextField(css_select="span.d-inline-block.float-sm-right") link = AttrField(css_select="h1.h3.lh-condensed > a", attr="href")

class Meta: source = "https://github.com/trending" route = "/trending"

api = Api()api.register(GitHubTrend)

if __name__ == "__main__": api.run()


訪問 http://localhost:5000/trending 即可返回 GitHub 熱門項目的數據。


2.新聞網站數據提取


在新聞網站上,您可以使用 toapi 提取新聞標題、內容等信息,并提供 RESTful API 供其他應用使用。

class News(Item): title = TextField(css_select="h1.article-title") content = TextField(css_select="div.article-body") link = AttrField(css_select="a.read-more", attr="href")

class Meta: source = "https://news.example.com" route = "/news/:id"


此 API 接口將提供關于新聞的詳細信息,幫助構建新聞聚合平臺。

六 總結

toapi 是一個非常簡潔、易用的工具,適用于快速爬取網頁并將數據轉換為 API 的場景。它以簡單的聲明式規則和 RESTful 接口為核心,適合初學者和需要快速開發的項目。如果需要更復雜的功能,可以結合 Selenium 或其他動態網頁處理工具使用。各位小伙伴,今天的 Python 學習之旅就到這里啦!

文章轉自微信公眾號@王老五說職場

上一篇:

RESTful API、gRPC 和 GraphQL 有何不同,如何正確地做技術選型?

下一篇:

如何獲取 WordPress開放平臺 API Key 密鑰(分步指南)
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費