如何处理维基百科 Python API 中页面的缺失坐标

How to handle missing coordinates for a page in the Wikipedia Python API

提问人:Mike 提问时间:10/21/2023 最后编辑:Peter MortensenMike 更新时间:10/23/2023 访问量:49

问:

我尝试显示页面坐标。但是,有些页面没有坐标,然后 API 会表现得很有趣。

为:

from wikipedia import wikipedia, DisambiguationError

   try:
        page = wikipedia.page("West Side Highway")
    except DisambiguationError as exception:
        page = wikipedia.page(exception.options[0], auto_suggest=False)

当我尝试验证是否有一些坐标时:

    if page.coordinates is None:
        print("no coordinates")

我不断从库中得到:KeyErrorwikipedia

if page.coordinates is None:
       ^^^^^^^^^^^^^^^^
  File "/Users/mav/.pyenv/versions/stories_env/lib/python3.11/site-packages/wikipedia/wikipedia.py", line 570, in coordinates
    coordinates = request['query']['pages'][self.pageid]['coordinates']
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
KeyError: 'coordinates'

我怎样才能发现页面的这种缺乏来处理它?coordinates

python 维基百科 wikipedia-api

评论

1赞 Goku - stands with Palestine 10/21/2023
什么?请提供最小的可重复示例the_page
0赞 InSync 10/21/2023
try:/coordinates = page.coordinates/except KeyError/print(...)?你已经有一个 - 块,不是吗?trycatch
0赞 Mike 10/21/2023
@InSync 是的,谢谢。你是对的:)

答:

1赞 jluims 10/21/2023 #1

错误似乎来自库本身。 根据这个 GitHub 问题,该库不会采取任何措施来防止 KeyError。您可以使用 try/except 来防止错误。例如:

from wikipedia import wikipedia, DisambiguationError

if __name__ == "__main__":
    try:
        page = wikipedia.page("West Side Highway") 
        print(page.coordinates)
    except KeyError:
        print("No coordinates")
    except DisambiguationError as exception:
        page = wikipedia.page(exception.options[0], auto_suggest=False)