移至主內容
DarkRanger's Secret Area

主導覽

  • 首頁
  • 關於本站
  • Linux
  • 程式開發
  • N900
  • 譯文
  • 資訊技術辭典

文章分類

  • 影劇
  • 遊戲
  • 筆記
  • 雜文
  • 資訊技術
  • 站務訊息

最新內容

  • How-To:Linux 安裝 DevilutionX
  • 於 2012 年建立的一份音樂播放清單
  • How-To:Linux 安裝 Medal of Honor: Allied Assault
  • Fallout 4 (2015)
  • How-To:Linux 安裝 Blood
  • 《終極動員令》系列早期作品原始碼釋出
  • How-To:Linux 安裝 Doom 3
  • Nausicaä of the Valley of the Wind (1984)
  • Intel 內顯與 Linux 桌面死當問題排解
  • 《哥吉拉 -1.0》心得補遺

mwclient

發表日期:星期六, 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()
 

 

而這支程式碼範例所執行的動作如下:

  1. 連接「www.example.com/wiki」。
  2. 使用特定的帳號(USER)及密碼(PASSWD)登入。
  3. 搜尋內文含有特定文字(FIND_TEXT)的頁面。
  4. 編輯這些頁面,替換文字(REPLACE_TEXT)並儲存。

 

筆記