Requests is a powerful and easy to use HTTP library for Python
Need to get HTML data? Need to interact with an API? Requests can do that.
While Python has a built-in library urllib3 for these situations, requests wraps this library with an easy to use interface.
Installation
To install requests, you can use pip to install it.
pip install -U requests
The -U is a good practice to force an upgrade if it is already installed.
I recommend using a virtual environment. You can learn more about them in my previous tutorial on Virtual Environments.
Usage
While requests has a lot of functionality, I am going to cover the basic usage and you can refer to the documentation for the more advanced usage.
Basic Query
import requests
req = requests.get('https://pokeapi.co/api/v2/pokemon/ditto/`)
Status Codes
You can verify you have a proper response by checking the status code.
req.status_code
200 means everything went well, you can look up other codes here.
You can also use this technique to verify a good status code.
if req.status_code == requests.codes.ok:
There is a cleaner way to send a request and check the status code:
import requests
req = req = requests.get('https://pokeapi.co/api/v2/pokemon/ditto/`)
try:
req.raise_for_status()
except requests.exceptions.HTTPError as e:
print e
Data
You can retrieve the response data using req.text
, req.json()
as bytes with req.content
, or raw with req.raw
.
Most of the time you will be using req.json()
and will be able to use the result as normal json data.
Requests can be used to POST, pass parameters, work with custom headers, and work with form data. If you want to learn other uses of the requests library, check out their documentation.
Requests is a simple by powerful python module that will handle 98% of your HTTP needs.
My Python Tips Series
- f-strings in Python 3.6
- Underscores in numeric literals
- A better interactive shell
- Secrets Module - New in 3.6
- PEP 8
- Slices
- Named Tuples
- Destructuring
- Counter
- Type Annotation
- Jupyter Notebooks
- Getting Help
- Virtual Environments
- Expiring Dict
- DRY Programming
- Knowing what exists
- Apscheduler
- Caching data with CacheTools
- Walrus Operator
Requests are so absoloutely huge, if you're trying to get your project to speak with a database. I've got one of my projects that links with the running app, Strava.
Great recommendation.
I enjoy reading your Python-Tips posts. I did notice you did not post in your STEMGeeks community, are you waiting for the communities beta to mature?
Shameless plug, I created a Learning Python community and would appreciate your thoughts.
I usually do. Just forgot the tag.
Good tips.. nice sharing keep it up...