如何处理维基百科Python API中页面的缺失坐标
问题描述
尝试显示页面坐标,但是某些页面没有坐标,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")
我一直在从wikipedia
库中得到KeyError
的错误:
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
的情况,以便处理它?
解决方案
错误似乎来自于库本身。根据这个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)