我正在尝试按照 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 库可以帮助您:Pywikipediabot或wikitools .
关于python - 使用 Python 导出维基百科,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512372/