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/