Requests
General Information
The requests library is a http library that allows you to interact with web servers via Python.
Sites to Practice Using Requests Against:
- Generic http request and response server: http://httpbin.org/
- XKCD Comics: https://xkcd.com/json.html
Checklist
- Python 2 or 3
Install
Requests can be installed via pip
pip install requests
Import
import requests
Using Requests
Requests supports the following http request types.
my_site = "http://httpbin.org/" # GET response = requests.get(my_site + "get") # POST response = requests.post(my_site + "post") # PUT response = requests.put(my_site + "put") # DELETE response = requests.delete(my_site + "delete") ##-- head and options responses are not implemented in the httpbin.org website --## # HEAD response = requests.head(my_site) # OPTIONS response = requests.options(my_site)
GET
Using the GET request and handling the response data.
Example: Retrieve the latest XKCD Comic Info ( More Info: https://xkcd.com/json.html)
#!/usr/bin/python3 import requests # XKCD Current Comic JSON API my_site = "https://xkcd.com/info.0.json" # Retrieve using GET print("Sending GET to: " + my_site) response = requests.get(my_site) # Extract the JSON object from the response data = response.json() # Show http status code on GET print("Status code is:" + str(response.status_code)) # Show Certain fields from the JSON object print("\n-- The Current XKCD Comic --") print("Comic Title: " + data['title']) print("Comic Text: " + data['alt']) print("Comic Date: " + data['year'] + "-" + data['month'] + "-" + data['day']) print("Comic Image URL: " + data['img'])
Output from above example
Sending GET to: https://xkcd.com/info.0.json Status code is:200 -- The Current XKCD Comic -- Comic Title: Pie Charts Comic Text: If you can't get your graphing tool to do the shading, just add some clip art of cosmologists discussing the unusual curvature of space in the area. Comic Date: 2018-8-10 Comic Image URL: https://imgs.xkcd.com/comics/pie_charts.png
POST
Send data in a POST request.
Example: Use the httpbin.org site to delay 5 seconds (will replace with a more interesting example later)
#!/usr/bin/python import requests # Post the request (this will delay/sleep for 5 seconds) response = requests.post("http://httpbin.org/delay/5") # Extract the JSON object from the response data = response.json() # Show http status code print("Status code is:" + str(response.status_code)) print("Returned response is:") print(data)