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 avatake 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)

Veebistlugemise osa on üldiselt sama. kasutades read meetodit ilma argumentida, 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 rohkem teha 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/