Start by connecting <connecting>
to your site:
>>> from mwclient import Site >>> site = Site('en.wikipedia.org')
For information about authenticating, please see the section on authenticating <auth>
.
To get the wikitext for a specific page:
>>> page = site.pages['Greater guinea pig'] >>> text = page.text()
If a page doesn't exist, Page.text() <mwclient.page.Page.text>
just returns an empty string. If you need to test the existence of the page, use `page.exists`:
>>> page.exists True
Edit the text as you like before saving it back to the wiki:
>>> page.save(text, 'Edit summary')
If the page didn't exist, this operation will create it.
Page.revisions() <mwclient.page.Page.revisions>
returns a List object that you can iterate over using a for loop. Continuation is handled under the hood so you don't have to worry about it.
Example: Let's find out which users did the most number of edits to a page:
>>> users = [rev['user'] for rev in page.revisions()] >>> unique_users = set(users) >>> user_revisions = [{'user': user, 'count': users.count(user)} for user in unique_users] >>> sorted(user_revisions, key=lambda x: x['count'], reverse=True)[:5] [{'count': 6, 'user': u'Wolf12345'}, {'count': 4, 'user': u'Test-bot'}, {'count': 4, 'user': u'Mirxaeth'}, {'count': 3, 'user': u'192.251.192.201'}, {'count': 3, 'user': u'78.50.51.180'}]
Tip: If you want to retrieve a specific number of revisions, the itertools.islice
method can come in handy:
>>> from datetime import datetime >>> from time import mktime >>> from itertools import islice >>> for revision in islice(page.revisions(), 5): ... dt = datetime.fromtimestamp(mktime(revision['timestamp'])) ... print '{}'.format(dt.strftime('%F %T'))
There are many other page operations like backlinks() <mwclient.page.Page.backlinks>
, embeddedin() <mwclient.page.Page.embeddedin>
, etc. See the API reference <mwclient.page.Page>
for more.