python - 使用 Python 导出维基百科

标签 python mediawiki python-requests

我正在尝试按照 http://www.mediawiki.org/wiki/Manual:Parameters_to_Special:Export 从土耳其语维基百科页面导出类别。 。这是我正在使用的代码;

# -*- coding: utf-8 -*-
import requests
from BeautifulSoup import BeautifulStoneSoup
from sys import version


link = "http://tr.wikipedia.org/w/index.php?title=%C3%96zel:D%C4%B1%C5%9FaAktar&action=submit"

def get(pages=[], category = False, curonly=True):
    params = {}
    if pages:
        params["pages"] = "\n".join(pages)
    if category:
        params["addcat"] = 1
        params["category"] = category

    if curonly:
        params["curonly"] = 1

    headers = {"User-Agent":"Wiki Downloader -- Python %s, contact: Yaşar Arabacı: yasar11732@gmail.com" % version}
    r = requests.post(link, headers=headers, data=params)
    return r.text

print get(category="Matematik")

由于我试图从土耳其语维基百科获取数据,因此我使用了它的网址。其他事情应该是不言自明的。我正在获取可用于导出数据而不是实际 xml 的表单页面。谁能看到我在这里做错了什么吗?我也尝试过发出获取请求。

最佳答案

没有名为category的参数,类别名称应该在catname参数中。

但是特别:Export 不是为机器人构建的,它是为人类构建的。因此,如果您正确使用 catname,它将再次返回表单,这次填写了类别中的页面。然后您应该再次单击“提交”,这将返回您想要的 XML .

我认为用代码来做这件事太复杂了。如果你使用 API 的话会更容易。有一些 Python 库可以帮助您:Pywikipediabotwikitools .

关于python - 使用 Python 导出维基百科,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512372/

相关文章:

Python ZeroMQ PUSH/PULL逻辑,为低端puller设置高水位线而不丢失任何消息

python - 解密 Chromium cookie

Python list + list 与 list.append()

python - 如何解析来自 Python 请求的 JSON 响应?

python - 如何从 Flask 服务器发送多个异步请求?

python - Selenium driver.get() 抛出异常

mediawiki - 将非图像设置为 MediaWiki wiki Logo

css - 如何更改 Mediawiki 导航侧边栏和页脚中的字体大小和颜色?

php - 类别中的下一篇、上一篇文章是否有任何扩展?

python - 为什么这个 python 请求每次都返回相同的值?