使用 Python API 访问维基百科页面时出现问题

问题描述 投票:0回答:1

我想从维基百科页面中提取图像 URL。我正在使用 Wikipedia python API 来实现这一点。我在访问某些页面时遇到一些问题,我无法理解出了什么问题。

我使用 Apple Inc. 维基百科页面作为示例。页面标题是

Apple Inc.
,URL 中的页面 name
Apple_Inc.
(也许有更好的名称)。

如果我使用

wikipedia.page()
函数访问标题为
Apple Inc.
的页面,则会收到错误:
Page id "apple in" does not match any pages. Try another id!
。如果我使用标题“
Apple_Inc.
”,情况也是如此。但是,如果我使用接近标题的内容,API 通常会给出正确的页面:
<WikipediaPage 'Apple Inc.'>
。请参阅下面的代码和结果页面/错误:

import wikipedia

page = wikipedia.page(title="Apple Inc.")
print(page)
# -> wikipedia.exceptions.PageError: Page id "apple in" does not match any pages. Try another id!

page = wikipedia.page(title="Apple_Inc.")
print(page)
# -> wikipedia.exceptions.PageError: Page id "apple in" does not match any pages. Try another id!

page = wikipedia.page(title="Apple Inc")
print(page)
# -> <WikipediaPage 'Apple Inc.'>

page = wikipedia.page(title="Apple In")
print(page)
# -> <WikipediaPage 'Apple Inc.'>

page = wikipedia.page(title="Apple Incorporated")
print(page)
# -> <WikipediaPage 'Apple Inc.'>

page = wikipedia.page(title="Apple Incorporated.")
print(page)
# -> <WikipediaPage 'Apple Inc.'>

page = wikipedia.page(title="Apple Incc.")
print(page)
# -> wikipedia.exceptions.PageError: Page id "apple inch" does not match any pages. Try another id!

一开始我以为是“。”在“苹果公司”中这会引起问题,但标题是“Apple Incorporated”。工作正常。奇怪的是,如果我使用标题“Apple Inc.”,那么 API 似乎出于某种原因正在寻找页面“appleinch”。

python wikipedia
1个回答
0
投票

根据文档,建议将是第一个被选择作为标题的内容,如果它是“无”,则将选择第一个结果的标题。之后创建并返回 WikipediaPage 的对象。

如果我们深入查看文档,我们会发现如果收到的 json 中没有

searchinfo
,那么建议将是
None
。但如果json中有
searchinfo
,则会选择并返回其标题。

你可能想知道收到的 json 是什么样子的,它看起来像下面的 json:

{
  "warnings": {
    "main": {
      "*": "Unrecognized parameter: limit."
    }
  },
  "batchcomplete": "",
  "continue": {
    "sroffset": 1,
    "continue": "-||"
  },
  "query": {
    "searchinfo": {
      "totalhits": 23251,
      "suggestion": "apple in",
      "suggestionsnippet": "apple in"
    },
    "search": [
      {
        "ns": 0,
        "title": "Apple Inc.",
        "pageid": 856
      }
    ]
  }
}

现在我们了解了有关文档的所有这些,是时候回答最初的问题了。您需要做的就是将名为

auto_suggest
的参数传递为 False。

import wikipedia

page = wikipedia.page(title="Apple Inc.",auto_suggest=False)
print(page)
# you'll see <WikipediaPage 'Apple Inc.'>

根据文档的意思是让维基百科找到查询的有效页面标题

© www.soinside.com 2019 - 2024. All rights reserved.