- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我从以下位置实现了示例:Mediawiki and Python
我读了Get wikipedia abstract using python和 How to parse/extract data from a mediawiki marked-up article via python和其他几个。
我正在尝试获取一些与类别相关的维基百科 stub 的转储,并将它们插入内部语义 mediawiki 站点。出于本示例的目的,我使用“Somali_Region”类别。该脚本使用 mediawiki API 获取数据,然后解析数据,删除所有需要的模板信息。
from wikitools import wiki
from wikitools import category
import mwparserfromhell
wikisite = "http://en.wikipedia.org/w/api.php"
parse_category = "Somali_Region"
wikiObject = wiki.Wiki(wikisite)
wikiCategory = category.Category(wikiObject, parse_category)
articles = wikiCategory.getAllMembersGen(namespaces=[0])
for article in articles:
wikiraw = article.getWikiText()
parsedWikiText = mwparserfromhell.parse(wikiraw)
for template in parsedWikiText.filter_templates():
parsedWikiText.remove(template)
print parsedWikiText
如果我尝试从维基百科转储并插入,内部语义 mediawiki 站点会失败,所以这不是一个选项。是否可以使用 API 将数据插入语义 mediawiki 站点?我读了mediawiki API edit page ,但我找不到 python 示例。
最佳答案
如果我没理解错的话,你想把你的parsedWikiText
保存到私有(private) wiki 中。
这是我做那种事情的方法(你需要在某处存储 USERNAME
和 PASSWORD
;我使用配置文件,但有更安全的方法)。我会在你的 for
循环之前接...
# Set up and authenticate into the target wiki if you need to.
from wikitools import wiki, page
target_wiki = wiki.Wiki('http://wiki.example.com/w/api.php')
site.login(USERNAME, PASSWORD)
for article in articles:
wikiraw = article.getWikiText()
parsedWikiText = mwparserfromhell.parse(wikiraw)
for template in parsedWikiText.filter_templates():
parsedWikiText.remove(template)
# Use the API's edit function to save the new content.
target_title = article.title
target_page = page.Page(target_wiki, target_title)
result = target_page.edit(text=parsedWikiText, summary="Imported text")
# Check to see if it worked.
if result['edit']['result'] == 'Success':
print 'Saved', target_title
else:
print 'Save failed', target_title
我在这里假设您想将 parsedWikiText
保存到一个新页面中。如果您的 wiki 页面上已经有内容,您必须先使用 target_page.getWikiText()
阅读它,然后以某种方式混合新文本。我还假设这篇文章将与维基百科中的名称相同;如果不是,则更改 target_title
。
关于python - 使用 python wikitools 解析维基百科 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15371505/
我已经使用 pip 安装了 wikitools,但是当我写的时候: from wikitools import wiki, api 在 Python 中,我收到以下消息: Traceback (mos
有人有使用 python(和 django)的 wikitools 获取维基百科页面的经验吗?我正在尝试获取这篇文章,但我只得到了几行内容,仅此而已。我需要获取整篇文章,但我似乎无法弄清楚。该文档也不
我从以下位置实现了示例:Mediawiki and Python 我读了Get wikipedia abstract using python和 How to parse/extract data f
我是一名优秀的程序员,十分优秀!