我想从维基百科页面中提取图像 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”。
根据文档,建议将是第一个被选择作为标题的内容,如果它是“无”,则将选择第一个结果的标题。之后创建并返回 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.'>
根据文档的意思是让维基百科找到查询的有效页面标题。