MediaWiki API的简单包装器
项目描述
MediaWiki API
此MIT许可库为MediaWiki API提供了一个非常简单的便利包装器,包括支持认证会话。它需要Python 3以及您的wiki使用MediaWiki 1.15.3或更高版本。
- 安装:
pip install mwapi
- 文档: https://pythonhosted.org/mwapi
- 仓库: https://github.com/mediawiki-utilities/python-mwapi
- 许可协议: MIT
示例
单个查询
>>> import mwapi
>>>
>>> session = mwapi.Session('https://en.wikipedia.org')
>>>
>>> print(session.get(action='query', meta='userinfo'))
{'query': {'userinfo': {'anon': '', 'name': '75.72.203.28', 'id': 0}},
'batchcomplete': ''}
>>>
>>> print(session.get(action='query', prop='revisions', revids=32423425))
{'query': {'pages': {'1429626': {'ns': 0, 'revisions': [{'user':
'Wknight94', 'parentid': 32276615, 'comment':
'/* References */ Removing less-specific cat', 'revid': 32423425,
'timestamp': '2005-12-23T00:07:17Z'}], 'title': 'Grigol Ordzhonikidze',
'pageid': 1429626}}}, 'batchcomplete': ''}
带有续集的查询
import mwapi
from mwapi.errors import APIError
session = mwapi.Session('https://en.wikipedia.org/')
# If passed a `continuation` parameter, returns an iterable over a continued query.
# On each iteration, a new request is made for the next portion of the results.
continued = session.get(
formatversion=2,
action='query',
generator='categorymembers',
gcmtitle='Category:17th-century classical composers',
gcmlimit=100, # 100 results per request
continuation=True)
pages = []
try:
for portion in continued:
if 'query' in portion:
for page in portion['query']['pages']:
pages.append(page['title'])
else:
print("MediaWiki returned empty result batch.")
except APIError as error:
raise ValueError(
"MediaWiki returned an error:", str(error)
)
print("Fetched {} pages".format(len(pages)))
异步单个查询
import asyncio
import aiohttp
import mwapi
async def query():
async with aiohttp.ClientSession() as s:
session = mwapi.AsyncSession(
'https://en.wikipedia.org',
user_agent='mwapi async demo',
session=s)
response = await asyncio.create_task(
session.get(action='query', prop='revisions', revids=32423425)
)
print(response)
asyncio.run(query())
带有续集的异步查询
import asyncio
import aiohttp
import mwapi
from mwapi.errors import APIError
async def query():
async with aiohttp.ClientSession() as s:
session = mwapi.AsyncSession(
'https://en.wikipedia.org',
user_agent='mwapi async demo',
session=s)
continued = await asyncio.create_task(
session.get(
formatversion=2,
action='query',
generator='categorymembers',
gcmtitle='Category:17th-century classical composers',
gcmlimit=100, # 100 results per request
continuation=True)
)
pages = []
try:
async for portion in continued:
if 'query' in portion:
for page in portion['query']['pages']:
pages.append(page['title'])
else:
print("MediaWiki returned empty result batch.")
except APIError as error:
raise ValueError(
"MediaWiki returned an error:", str(error)
)
print("Fetched {} pages".format(len(pages)))
asyncio.run(query())
作者
- YuviPanda -- https://github.com/yuvipanda
- Aaron Halfaker -- https://github.com/halfak
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
mwapi-0.6.1.tar.gz (10.6 kB 查看哈希)
构建发行版
mwapi-0.6.1-py2.py3-none-any.whl (12.2 kB 查看哈希值)