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

Question:

I try to display page coordinates. However, some pages do not have coordinates and the API then acts funny.

For:

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)

when I try to validate if there are some coordinates:

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

I keep getting the KeyError from the wikipedia lib:

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'

How can I catch this lack of coordinates for a page to handle it?

Asked By: Mike

||

Answers:

The error seems to be from the library itself.
According to this GitHub issue, the library doesn’t do anything to prevent the KeyError. It’s up to you to use try/except to guard against the error. For example:

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)
Answered By: jluims
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.