Veebist lugemine
Pythoni standardteegis on võimalik veebist lugeda kasutades moodulit urllib.request
.
import urllib.request
with urllib.request.urlopen("https://gitlab.cs.ttu.ee/iti0102/pydoc/raw/master/json_example.json") as f:
# read first 100 bytes
contents = f.read(100)
# the result is bytes object
print(contents)
Eelnevas näites avatakse URL ja loetakse sellest esimesed 100 baiti. contents
muutujasse salvestatakse bytes
tüüpi objekt.
Toome näite, kuidas lugeda JSON formaadis andmeid veebist:
import urllib.request
import json
with urllib.request.urlopen("https://gitlab.cs.ttu.ee/iti0102/pydoc/raw/master/json_example.json") as f:
# read all
contents = f.read()
# to convert into regular string
print(contents.decode("utf-8"))
# read json to python object
data = json.loads(contents.decode('utf-8'))
print(data)
Veebist lugemise osa on üldiselt sama. Kasutades read
meetodit ilma argumendita, loetakse kogu sisu eelnevalt avatud URL-ilt.
Teisendame saadud baidid sõneks (decode
meetod). JSON-i lugemiseks kasutame json
moodulist funktsiooni loads
, mis saab ette sõne ja teisendab selle
Pythoni objektiks (antud näite puhul dict
).
Täpsemalt saab lugeda Pythoni dokumentatsioonist: https://docs.python.org/3/library/urllib.request.html
Requests pakk
Kui teil on vaja veebist lugemist teha rohkem kui eelnevates näidetes, oleks mõistlik kasutada järgmist teeki: http://docs.python-requests.org/en/master/
See ei sisaldu Pythoni sandardteegis, seega peate selle eraldi installeerima.
Toome siin näite, millega saab lugeda veebist JSON formaadis andmeid:
import requests
r = requests.get("https://gitlab.cs.ttu.ee/iti0102/pydoc/raw/master/json_example.json")
# get the contents
print(r.text)
# in case the contents are json, get python object from it
print(r.json())
Peale URL-i kirjeldamist saab JSON andmed Pythoni objektina kätte ühe meetodiga: r.json()
.
Koodinäites on välja toodud ka see, kuidas saada sisu sõnena (r.text
).
Täpsemalt tasub lugeda teegi dokumentatsioonist: http://docs.python-requests.org/en/master/