Accessing Internet Data
Python Urllib Module
Urllib package is the URL handling module for python. It is used to fetch URLs (Uniform Resource
Locators). It uses the urlopen function and is able to fetch URLs using a variety of different protocols.
HTTPResponse Objects
status HTTP status code result such as 200 or 404
read read the data from the result
Example:
import urllib
def main():
webUrl = [Link]("[Link]
print ("result code: " + str([Link]()))
data = [Link]()
print (data)
main()
Working with JSON
JSON (JavaScript Object Notation)is an open standard file format and data interchange format that uses
human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays.
Python has a built-in package called json, which can be used to work with JSON data. If you have a
JSON string, you can parse it by using the [Link]() method.
Example:
import json
def main():
jsonStr = '''{
"sandwich" : "Reuben",
"toasted" : true,
"toppings" : [
"Thousand Island Dressing",
"Sauerkraut",
"Pickles"
],
"price" : 8.99
}'''
data = [Link](jsonStr)
print("Sandwich: " + data['sandwich'])
if (data['toasted']):
print("And it's toasted!")
for topping in data['toppings']:
print("Topping: " + topping)
main()
Earthquake Data App
import urllib
import json
def printResults(data):
# Use the json module to load the string data into a dictionary
theJSON = [Link](data)
# now we can access the contents of the JSON like any other Python object
if "title" in theJSON["metadata"]:
print(theJSON["metadata"]["title"])
# output the number of events, plus the magnitude and each event name
count = theJSON["metadata"]["count"]
print(str(count) + " events recorded")
# for each event, print the place where it occurred
for i in theJSON["features"]:
print(i["properties"]["place"])
print("--------------\n")
# print the events that only have a magnitude greater than 4
for i in theJSON["features"]:
if i["properties"]["mag"] >= 4.0:
print("%2.1f" % i["properties"]["mag"], i["properties"]["place"])
print("--------------\n")
# print only the events where at least 1 person reported feeling something
print("\n\nEvents that were felt:")
for i in theJSON["features"]:
feltReports = i["properties"]["felt"]
if (feltReports != None):
if (feltReports > 0):
print("%2.1f" % i["properties"]["mag"], i["properties"]
["place"], " reported " + str(feltReports) + " times")
def main():
urlData = "[Link]
webUrl = [Link](urlData)
print("result code: " + str([Link]()))
if ([Link]() == 200):
data = [Link]().decode("utf-8")
printResults(data)
else:
print("Received an error from server, cannot retrieve results " +
str([Link]()))
main()