In many extractors we just use requests.get(url).text
We should save the request object, and check for bad responses, e.g. by checking status code >= 400 -> error
We should throw an exception with the request.status_code and response.reason.
The front-end should catch these exceptions and display an appropriate message accordingly.