python从多个随机的wikipedia页面检索文本

2024-10-01 13:26:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python2.7和wikipedia包从多个随机的wikipedia页面检索文本,如docs中所述。在

我使用以下代码

def get_random_pages_summary(pages = 0):
    import wikipedia
    page_names = [wikipedia.random(1) for i in range(pages)]
    return [[p,wikipedia.page(p).summary] for p in page_names]

text =  get_random_pages_summary(50)

得到以下错误

File "/home/user/.local/lib/python2.7/site-packages/wikipedia/wikipedia.py", line 393, in __load raise DisambiguationError(getattr(self, 'title', page['title']), may_refer_to) wikipedia.exceptions.DisambiguationError: "Priuralsky" may refer to: Priuralsky District Priuralsky (rural locality)

我要做的是得到文本。从维基百科的随机页面,我需要它只是普通文本,没有任何标记

我假设问题是在搜索Wikipedia页面时获取一个有多个选项的随机名称。 当我用它得到一个维基百科页面时。效果很好。在

谢谢


Tags: in文本forgetnamestitlepagerandom
2条回答

根据文档(http://wikipedia.readthedocs.io/en/latest/quickstart.html),错误将返回多个候选页,因此您需要再次搜索该候选页。在

try:
    wikipedia.summary("Priuralsky")
except wikipedia.exceptions.DisambiguationError as e:
    for page_name in e.options:
        print(page_name)
        print(wikipedia.page(page_name).summary)

你可以像这样改进你的代码。在

^{pr2}$

当你用Wikipedia的API(不是用不同的工具直接拉HTML)来处理随机文章时,我的建议是捕捉消歧错误并重新随机文章,以防发生这种情况。在

def random_page():
   random = wikipedia.random(1)
   try:
       result = wikipedia.page(random).summary
   except wikipedia.exceptions.DisambiguationError as e:
       result = random_page()
   return result

相关问题 更多 >