Class or not in Page Scraper (Python BeautifulSoup)
Class inheritance
Classes no longer have to be subclasses from object
class WebsiteImages:

Naming Conventions
Methods and variable names should be snake_case. Classes should be PascalCase, so you got that correct :-).
Imports
Any and all imports should go at the top of the file.
f&quot;&quot; strings
You should use f&quot;&quot; strings to directly implement variables into your strings.
url = urllib.request.urlopen(f&quot;{self.website_url}&amp;page={page}&amp;sort=best&quot;)

User Interaction
The way a user has to interact with this program is pretty challenging to understand. If I was a normal user, I would do something like this:
person = WebsiteImages(&quot;John Smith&quot;, &quot;https://www.WebsiteImages.co.uk&quot;)

But I would get an error, or no images returned because I didn't know the name had to be encoded with %20 and I didn't know I needed to specify a very particular url. I would blame it on the program and look for something else that's more user friendly.

I would solve this by only requiring a name. Since you're going to one website, you can save the url as an instance variable and sort things out there, instead of relying on a user to provide perfect input. Never trust user input.
john = WebsiteImages(&quot;John Smith&quot;)
print(john.get_image_ids())

And within the constructor you can do something like this:
def __init__(self, photographer: str):
    self.photographer = '%20'.join(photographer.split())
    self.website_url = f&quot;https://www.WebsiteImages.co.uk/search/photographer?photographer={self.photographer}&quot;