Querying existing API (JSON)
The first example uses the qldtraffic-website-api-specification-V1-1
qldtraffic.py
import requests
import json
from datetime import datetime
apikey = "3e83add325cbb69ac4d8e5bf433d770b"
#^^ public apikey, limited to 100 requests/minute.
baseURL = "https://api.qldtraffic.qld.gov.au/v1/"
url = baseURL + "events?apikey=" + apikey
answer = requests.get(url)
#^^ this could take some time..
#convert to Python dictionary:
result = json.loads(answer.text)
for feature in result["features"]:
description = feature["properties"]["description"]
information = feature["properties"]["information"]
eventType = feature["properties"]["event_type"]
impact = feature["properties"]["impact"]["impact_type"]
start_raw = feature["properties"]["duration"]["start"]
end_raw = feature["properties"]["duration"]["end"]
#--------------------------CLEANING----------
#clean up date strings from raw time strings (e.g.: 2018-10-29T02:30:00+10:00)
if start_raw:
start_raw = start_raw[:-9].replace("T","-")
#^^ strip the last 9 characters, including seconds and +10:00 time zone
start = datetime.strptime(start_raw, "%Y-%m-%d-%H:%M").strftime("%A %d %B %Y")
#^^ %A = day name, %B = month name
if end_raw:
end_raw = end_raw[:-9].replace("T","-")
end = datetime.strptime(end_raw, "%Y-%m-%d-%H:%M").strftime("%A %d %B %Y")
#check there are no NULL strings:
if not description:
description = "No description"
if not information:
information = "No information"
#---------------------------------------------
print(description)
print(eventType)
print(information)
print("Start: " + start)
print(impact)
print("End: " + end)
print("--------------------------------------------")
print("")
starwars1.py
#SWAPI = The Star Wars API..
#documentation: https://swapi.co/documentation
import requests
import json
#--------------------------------
baseurl = "https://swapi.dev/api/"
resource = "people" # films, people, planets, species, starships, vehicles
function = "?search=" # "", "?search=", "schema"
value = "Luke" # should be empty string i.e. "" if viewing schema
#--------------------------------
url = baseurl + resource + "/" + function + value
#https://swapi.co/api/people/?search=Luke
response = requests.get(url)
print("Response code:", response.status_code)
#Response codes:
#200 = good
#301 = redirected to a different endpoint
#400 = bad request
#401 = not authenticated
#403 = forbidden access
#404 = not found
parsed = json.loads(response.text)
print(json.dumps(parsed, indent=2, sort_keys=True))
starwars2.py
#SWAPI = The Star Wars API..
#documentation: https://swapi.co/documentation
import requests
import json
#--------------------------------
baseurl = "https://swapi.dev/api/"
resource = "people" # films, people, planets, species, starships, vehicles
function = "schema" # "", "?search=", "schema"
value = "" # should be empty string i.e. "" if viewing schema
#--------------------------------
url = baseurl + resource + "/" + function + value
#https://swapi.co/api/people/schema
response = requests.get(url)
print("Response code:", response.status_code)
#Response codes:
#200 = good
#301 = redirected to a different endpoint
#400 = bad request
#401 = not authenticated
#403 = forbidden access
#404 = not found
parsed = json.loads(response.text)
print(json.dumps(parsed, indent=2, sort_keys=True))
wildnet.py
#https://data.qld.gov.au/dataset/qld-wildlife-data-api
import requests
import json
#--------------------------------
searchTerm = "spider"
searchEndPoint = "http://environment.ehp.qld.gov.au/species/?op=speciessearch&kingdom=animals&species="
#--------------------------------
response = requests.get(searchEndPoint+searchTerm)
print("Response code:", response.status_code)
#Response codes:
#200 = good
#301 = redirected to a different endpoint
#400 = bad request
#401 = not authenticated
#403 = forbidden access
#404 = not found
parsed = json.loads(response.text)
print(json.dumps(parsed, indent=2, sort_keys=True))