mwclient
由 darkranger 在 週六, 05/02/2015 - 11:20 發表,更新日期:週六, 05/02/2015 - 11:34
先前在處理一個使用 MediaWiki 架設的網站時,打算利用機器人程式來自動化處理大量的修改工作。於是看了 Manual:Creating a bot 這個頁面,接著便找到了 mwclient 這款輕量化、可用來存取 MediaWiki API 的 Python 函式庫。雖然這款函式庫所提供的功能符合 DR 的需求,但文件卻不是很齊全,使得 DR 先花了點時間檢視其原始碼才弄出想要的功能。
該函式庫在 Fedora 21 上的安裝方式如下:
- sudo yum install python-mwclient
若是在 Windows 環境下,那麼最方便的安裝方式是使用 pip 安裝:
- cd C:\Python27\Scripts
- pip install six mwclient
使用 mwclient 的程式碼範例如下:
#!/usr/bin/python # -*- coding: utf-8 -*- import mwclient SITE = "www.example.com" PATH = "/wiki/" USER = "YOUR_USERNAME" PASSWD = "YOUR_PASSWORD" FIND_TEXT = u"[[Category:Chinese]]" REPLACE_TEXT = u"[[Category:Traditional Chinese]]" SUMMARY = u"Edited by a robot." def wiki_find_replace(): site = mwclient.Site(SITE, path = PATH) site.login(USER, PASSWD) do_search = site.search(FIND_TEXT, what = "text") result = [] while 1: try: result.append(do_search.next()["title"]) except: break x = 0 for title in result: page = site.Pages[title] text = page.text().replace(FIND_TEXT, REPLACE_TEXT) page.save(text, summary = SUMMARY) x = x + 1 print "Page %d updated." % x print "%d page(s) updated." % x if __name__ == "__main__": wiki_find_replace()
而這支程式碼範例所執行的動作如下:
- 連接「www.example.com/wiki」。
- 使用特定的帳號(USER)及密碼(PASSWD)登入。
- 搜尋內文含有特定文字(FIND_TEXT)的頁面。
- 編輯這些頁面,替換文字(REPLACE_TEXT)並儲存。