2011-06-16 181 views
2

我怎樣可以登錄到一個RCurl的mediawiki(或捲曲,我可以使其適應於R封裝)?登錄到MediaWiki使用RCurl

我只是想解析的頁面,但我需要以其他方式登錄我不能訪問它。

+0

你google了嗎? [這](http://www.wikihow.com/Use-the-MediaWiki-API)似乎是一個好的第一步。 – Rom1 2011-06-16 10:38:51

+0

檢查這個問題:如何分析維基百科的文章與R數據庫?(http://stackoverflow.com/q/6095952/168747) – Marek 2011-06-16 13:08:11

+0

@Marek:謝謝。我的問題有點棘手,因爲我不使用維基百科,但需要身份驗證的私人mediawiki,但使用mediawiki API的功能?getForm絕對接縫是一個好主意:) – RockScience 2011-06-17 02:34:14

回答

3

MediaWiki的API有返回的cookie和令牌登錄功能。您必須保存併發送回API以驗證會話和登錄。這裏有一個方法,捲曲和XMLstarlet做在bash:

發送請求登錄令牌,節省cookie.txt的餅乾和的Output.xml輸出。

curl -c cookies.txt -d "lgname=YOURNAME&lgpassword=YOURPASS&action=login&format=xml" http://your.mediawikiinstall.com/w/api.php -o output.xml

然後拉令牌出使用XMLstarlet的XML的,並且將它保存爲一個bash變量。

YOURTOKEN=$(xml sel -t -m '//login' -v '//@token' output.xml)

然後發送登錄請求,包括cookie文件和令牌。

curl -b cookies.txt -d "action=login&lgname=YOURNAME&lgpassword=YOURPASS&format=xml&lgtoken="$YOURTOKEN http://your.mediawikiinstall.com/w/api.php