如何創建維基百科 CLI
使用Python和維基百科API建立維基百科命令列工具
創建一個維基百科命令列介面 (CLI) 工具是一個很有成就感項目,它結合了Python的簡潔性和維基百科龐大的知識庫。本教學將逐步指導您如何建立一個使用其API從維基百科獲取資訊的CLI工具。
先決條件
開始之前,請確保您擁有以下內容:
- 系統上安裝了Python 3.7或更高版本。
- Python的基礎知識和API的使用經驗。
- 用於存取維基百科API的網路連線。
第一步:了解維基百科API
維基百科在 //m.sbmmt.com/link/27bf6226213cf288dfbf62ffc02bad4f 提供了一個RESTful API。此API允許開發人員查詢維基百科的內容、元資料等等。我們將使用的關鍵端點包括:
-
action=query
:從維基百科取得一般內容。 -
list=search
:按關鍵字搜尋文章。 -
prop=extracts
:檢索文章摘要。
所有API請求的基本網址為:
<code>//m.sbmmt.com/link/27bf6226213cf288dfbf62ffc02bad4f</code>
第二步:設定Python環境
先建立一個Python虛擬環境並安裝所需的函式庫。我們將使用requests
進行HTTP請求,使用argparse
處理CLI參數。
<code># 创建虚拟环境 python -m venv wikipedia-cli-env # 激活环境 # 在Windows上: wikipedia-cli-env\Scripts\activate # 在Mac/Linux上: source wikipedia-cli-env/bin/activate # 安装依赖项 pip install requests argparse</code>
第三步:規劃CLI功能
我們的CLI工具將包括以下功能:
- 搜尋維基百科文章:允許使用者以關鍵字搜尋文章。
- 取得文章摘要:檢索特定文章的簡短摘要。
- 查看CLI幫助:顯示使用說明。
第四步:實作CLI工具
以下是CLI工具的Python程式碼:
import argparse import requests # 定义维基百科API的基本URL WIKIPEDIA_API_URL = "//m.sbmmt.com/link/27bf6226213cf288dfbf62ffc02bad4f" def search_articles(query): """搜索与查询匹配的维基百科文章。""" params = { 'action': 'query', 'list': 'search', 'srsearch': query, 'format': 'json', } response = requests.get(WIKIPEDIA_API_URL, params=params) response.raise_for_status() # 对错误的响应引发错误 data = response.json() if 'query' in data: return data['query']['search'] else: return [] def get_article_summary(title): """获取维基百科文章的摘要。""" params = { 'action': 'query', 'prop': 'extracts', 'exintro': True, 'titles': title, 'format': 'json', } response = requests.get(WIKIPEDIA_API_URL, params=params) response.raise_for_status() data = response.json() pages = data.get('query', {}).get('pages', {}) for page_id, page in pages.items(): if 'extract' in page: return page['extract'] return "No summary available." def main(): parser = argparse.ArgumentParser(description="一个与维基百科交互的CLI工具。") subparsers = parser.add_subparsers(dest="command") # 子命令:search search_parser = subparsers.add_parser("search", help="在维基百科上搜索文章。") search_parser.add_argument("query", help="搜索查询。") # 子命令:summary summary_parser = subparsers.add_parser("summary", help="获取特定维基百科文章的摘要。") summary_parser.add_argument("title", help="维基百科文章的标题。") args = parser.parse_args() if args.command == "search": results = search_articles(args.query) if results: print("搜索结果:") for result in results: print(f"- {result['title']}: {result['snippet']}") else: print("未找到结果。") elif args.command == "summary": summary = get_article_summary(args.title) print(summary) else: parser.print_help() if __name__ == "__main__": main()
第五步:測試CLI工具
將腳本儲存為wikipedia_cli.py
。現在您可以從終端運行該工具:
- 搜尋文章:
<code>python wikipedia_cli.py search "Python programming"</code>
- 取得文章摘要:
<code>python wikipedia_cli.py summary "Python (programming language)"</code>
第六步:增強工具
為了使工具更強大和用戶友好,請考慮添加以下內容:
- 錯誤處理:為失敗的API請求提供詳細的錯誤訊息。
-
格式化:使用諸如
rich
之類的函式庫來獲得更漂亮的輸出。 - 快取:實作快取以避免相同查詢的重複API呼叫。
- 附加功能:新增對擷取相關文章、類別或影像的支援。
結論
您已成功使用Python及其API建立了一個維基百科CLI工具!此工具可以作為更高級專案的良好起點,例如將其整合到其他應用程式或建立GUI版本。祝您編碼愉快!
以上是如何創建維基百科 CLI的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

處理API認證的關鍵在於理解並正確使用認證方式。 1.APIKey是最簡單的認證方式,通常放在請求頭或URL參數中;2.BasicAuth使用用戶名和密碼進行Base64編碼傳輸,適合內部系統;3.OAuth2需先通過client_id和client_secret獲取Token,再在請求頭中帶上BearerToken;4.為應對Token過期,可封裝Token管理類自動刷新Token;總之,根據文檔選擇合適方式,並安全存儲密鑰信息是關鍵。

在Python中同時遍歷兩個列表的常用方法是使用zip()函數,它會按順序配對多個列表並以最短為準;若列表長度不一致,可使用itertools.zip_longest()以最長為準並填充缺失值;結合enumerate()可同時獲取索引。 1.zip()簡潔實用,適合成對數據迭代;2.zip_longest()處理不一致長度時可填充默認值;3.enumerate(zip())可在遍歷時獲取索引,滿足多種複雜場景需求。

要使用Python創建現代高效的API,推薦使用FastAPI;其基於標準Python類型提示,可自動生成文檔,性能優越。安裝FastAPI和ASGI服務器uvicorn後,即可編寫接口代碼。通過定義路由、編寫處理函數並返回數據,可以快速構建API。 FastAPI支持多種HTTP方法,並提供自動生成的SwaggerUI和ReDoc文檔系統。 URL參數可通過路徑定義捕獲,查詢參數則通過函數參數設置默認值實現。合理使用Pydantic模型有助於提升開發效率和準確性。

要測試API需使用Python的Requests庫,步驟為安裝庫、發送請求、驗證響應、設置超時與重試。首先通過pipinstallrequests安裝庫;接著用requests.get()或requests.post()等方法發送GET或POST請求;然後檢查response.status_code和response.json()確保返回結果符合預期;最後可添加timeout參數設置超時時間,並結合retrying庫實現自動重試以增強穩定性。

在Python中,函數內部定義的變量是局部變量,僅在函數內有效;外部定義的是全局變量,可在任何地方讀取。 1.局部變量隨函數執行結束被銷毀;2.函數可訪問全局變量但不能直接修改,需用global關鍵字;3.嵌套函數中若要修改外層函數變量,需使用nonlocal關鍵字;4.同名變量在不同作用域互不影響;5.修改全局變量時必須聲明global,否則會引發UnboundLocalError錯誤。理解這些規則有助於避免bug並寫出更可靠的函數。

是的,你可以使用Python和Pandas解析HTML表格。首先,使用pandas.read_html()函數提取表格,該函數可將網頁或字符串中的HTML元素解析為DataFrame列表;接著,若表格無明確列標題,可通過指定header參數或手動設置.columns屬性修復;對於復雜頁面,可結合requests庫獲取HTML內容或使用BeautifulSoup定位特定表格;注意JavaScript渲染、編碼問題及多表識別等常見陷阱。

在Python中訪問嵌套JSON對象的方法是先明確結構,再逐層索引。首先確認JSON的層級關係,例如字典嵌套字典或列表;接著使用字典鍵和列表索引逐層訪問,如data"details"["zip"]獲取zip編碼,data"details"[0]獲取第一個愛好;為避免KeyError和IndexError,可用.get()方法設置默認值,或封裝函數safe_get實現安全訪問;對於復雜結構,可遞歸查找或使用第三方庫如jmespath處理。

def適用於復雜函數,支持多行、文檔字符串和嵌套;lambda適合簡單匿名函數,常用於參數傳函數的場景。選def的情況:①函數體多行;②需文檔說明;③被多處調用。選lambda的情況:①一次性使用;②無需名字或文檔;③邏輯簡單。注意lambda延遲綁定變量可能引發錯誤,且不支持默認參數、生成器或異步。實際應用中根據需求靈活選擇,清晰優先。
