{"id":235,"date":"2019-01-15T10:21:05","date_gmt":"2019-01-15T10:21:05","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/?post_type=chapter&#038;p=235"},"modified":"2023-12-13T09:40:11","modified_gmt":"2023-12-13T09:40:11","slug":"lugemine-veebist","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/chapter\/lugemine-veebist\/","title":{"raw":"Lugemine veebist","rendered":"Lugemine veebist"},"content":{"raw":"<h2>Veebis on fail<\/h2>\r\n<p class=\"vspace\">Mitu peat\u00fckki tagasi tutvusime v\u00f5imalusega oma arvutis olevast failist andmeid lugeda. T\u00e4nap\u00e4eval tuleb tihti ka ette, et soovitud fail paikneb kusagil internetis. Pythoniga ei ole veebist lugemine eriti raske. Kasutada saab k\u00e4sku <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">urlopen<\/code>, mis on vaja eelnevalt importida moodulist <em>urllib.request<\/em>.<\/p>\r\n<p class=\"vspace\">Kui meid huvitav info (antud juhul Juhan Liivi luuletuse \"Ta lendab mesipuu poole\" 1. salm) on aadressil <a href=\"https:\/\/kodu.ut.ee\/~marinai\/eprogalused\/mesipuu.txt\">https:\/\/kodu.ut.ee\/~marinai\/eprogalused\/mesipuu.txt<\/a>, siis saame selle k\u00e4tte j\u00e4rgmise programmiga:<\/p>\r\n<strong>N\u00e4iteprogramm. Faili lugemine veebist<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from urllib.request import urlopen\r\n \r\nfailVeebis = urlopen(\"https:\/\/kodu.ut.ee\/~marinai\/eprogalused\/mesipuu.txt\")\r\nbaidid = failVeebis.read()  # kogu fail baitidena\r\ntekst = baidid.decode()     # baitidest saab s\u00f5ne\r\nfailVeebis.close()\r\nprint(tekst)<\/pre>\r\nHetkel k\u00e4sitlesime kogu teksti tervikuna: algul baitidena, hiljem \u00fche s\u00f5nena. Kuna selles s\u00f5nes on ka reavahetused, siis kuvati s\u00f5ne mitme reana. Kui ridasid on tarvis k\u00e4sitleda eraldi s\u00f5nedena, siis on abiks funktsioon <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">splitlines<\/code>, mis jagab \u00fche s\u00f5ne reavahetuse kohtade j\u00e4rgi s\u00f5nede j\u00e4rjendiks:\r\n\r\n<strong>N\u00e4iteprogramm. Faili lugemine veebist koos ridade eraldamisega<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from urllib.request import urlopen\r\n \r\nfailVeebis = urlopen(\"https:\/\/kodu.ut.ee\/~marinai\/eprogalused\/mesipuu.txt\")\r\nbaidid = failVeebis.read()\r\ntekst = baidid.decode()            # baitidest saab s\u00f5ne\r\nridadeKaupa = tekst.splitlines()   # s\u00f5ne jaotatakse reavahetuse kohtadelt\r\nfailVeebis.close()\r\nprint(ridadeKaupa[4])              # rida indeksiga 4<\/pre>\r\nRida indeksiga 4 (<code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ridadeKaupa[4]<\/code><\/code>) on tavam\u00f5istes 5. rida, sest loendamine algab nullist. Kuna tegemist on s\u00f5nega, siis saame indeksi abil k\u00e4tte selle \u00fcksikuid s\u00fcmboleid. N\u00e4iteks real indeksiga 4 saab s\u00fcmboli indeksiga 7 k\u00e4tte k\u00e4suga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ridadeKaupa[4][7]<\/code>. Proovi, mis s\u00fcmbol sellel kohal on.\r\n<h2>Kindel struktuur. HTML<\/h2>\r\n<p class=\"vspace\">Eelmises n\u00e4ites lugesime veebist ilma vorminduseta tekstifaili. Suur osa veebis olevatest failidest on keerulisema struktuuriga, sageli sellisega, kus lehek\u00fclje l\u00e4htekood on tavalisele vaatajale arusaamatu. Enamjaolt on l\u00e4htekoodis arvestatud sellega, et veebilehitseja muudaks selle inimesele m\u00f5istetavaks v\u00e4ljundiks. N\u00e4iteks Tartu \u00dclikooli arvutiteaduse instituudi veebileht algab nii:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"et\" dir=\"ltr\"&gt;\r\n&lt;head&gt;\r\n  &lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\" \/&gt;<\/pre>\r\n<p class=\"vspace\">Esimese rida <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">!DOCTYPE html<\/code><\/code> t\u00e4histab, et tegemist on HTML-keelse tekstiga. HTML (<em>HyperText Markup Language<\/em>) on ilmselt levinuim veebilehtede loomisel kasutatav keel. (Loe lisaks <a class=\"urllink\" href=\"https:\/\/et.wikipedia.org\/wiki\/HTML\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/et.wikipedia.org\/wiki\/HTML<\/a>). Teisel real n\u00e4idatakse, et keel on eesti keel <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">lang=\"et\"<\/code><\/code> ja tekst on vasakult paremale (<code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">dir=\"ltr\",<\/code><\/code> <em>Left-to-right<\/em>). Neljandal real on n\u00e4iteks n\u00e4ha, et teksti kodeering on UTF-8 (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">charset=utf-8<\/code>).<\/p>\r\n<p class=\"vspace\">HTML-keeles on olulisel kohal m\u00e4rgendamine <em>(markup).<\/em> M\u00e4rgendi algust ja l\u00f5ppu t\u00e4histavad s\u00fcmbolid <strong>&lt;<\/strong> ja <strong>&gt;<\/strong> ning m\u00e4rgendi sisu j\u00e4rgi oskab veebilehitseja teksti sobivalt kuvada. Leidub teisigi m\u00e4rgendikeeli, kus m\u00e4rgendid on erinevalt esitatud (nt dokumentide kirjutamiseks kasutatav LaTeX).<\/p>\r\n\r\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\r\n<code>[h5p id=\"38\"]<\/code>\r\n<h3>Loetavate s\u00fcmbolite piiramine<\/h3>\r\n<p class=\"vspace\">Funktsioonile <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">read<\/code> saab anda ka argumendi, mis piirab loetavate m\u00e4rkide arvu. Kui argumenti pole, siis loetakse terve fail.<\/p>\r\n<p class=\"vspace\">J\u00e4rgmine programm loeb instituudi veebilehelt 121 esimest m\u00e4rki:<\/p>\r\n<strong>N\u00e4iteprogramm. Esimeste s\u00fcmbolite lugemine<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from urllib.request import urlopen\r\nfailVeebis = urlopen(\"http:\/\/www.cs.ut.ee\")\r\nbaidid = failVeebis.read(121)  # 121 esimest\r\ntekst = baidid.decode()        # baitidest saab s\u00f5ne\r\nprint(tekst)\r\nfailVeebis.close()<\/pre>\r\n<h3>Struktuuri t\u00f6\u00f6tlemine<\/h3>\r\nKui lehek\u00fclg on teatud struktuuriga (nt HTML-keeles, millega tutvusime eespool), siis saab kirjutada programmi, mis otsib sealt huvipakkuvaid andmeid. Ka v\u00f5ib lehek\u00fclje aadressis olla aasta, kuu ja kuup\u00e4ev (n\u00e4iteks\r\n<a href=\"http:\/\/meteo.physic.ut.ee\/et\/showperiod.php?type=setmonth&amp;year=2018&amp;month=10&amp;m=24\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/meteo.physic.ut.ee\/et\/showperiod.php?type=setmonth&amp;year=2018&amp;month=10&amp;m=24<\/a>). J\u00e4rgmine programm loeb aadressilt <a class=\"urllink\" href=\"http:\/\/meteo.physic.ut.ee\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/meteo.physic.ut.ee\/<\/a> \u00fche valitud kuup\u00e4eva andmed ja leiab sealt selle p\u00e4eva keskmise temperatuuri:\r\n\r\n<strong>N\u00e4iteprogamm. Keskmise \u00f5hutemperatuuri lugemine<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from urllib.request import urlopen\r\n \r\n#valitud kuup\u00e4ev\r\np\u00e4ev = 24\r\nkuu = 10\r\naasta = 2018\r\n \r\n#paneme lingi kokku\r\nvastus = urlopen(\"http:\/\/meteo.physic.ut.ee\/et\/showperiod.php?type=setday&amp;year=\"+str(aasta)+\"&amp;month=\"+str(kuu)+\"&amp;day=\"+str(p\u00e4ev))\r\n#loeme terve faili\r\nbaidid = vastus.read()\r\ntekst = baidid.decode()\r\n \r\n#otsime failis s\u00f5na 'keskmine', mis on \u00fcmbritsetud HTML-m\u00e4rgenditega\r\notsitav = \"&lt;SMALL&gt;keskmine&lt;\/SMALL&gt;&lt;BR&gt;&lt;B&gt;\"\r\nalgus = tekst.index(otsitav)       #meetod index tagastab otsitava s\u00f5na positsiooni alguse\r\ntemp_algus = algus + len(otsitav)  #indeks, kust tekstis v\u00f5ib leida temperatuuri\r\ndeg = tekst.index(\" &amp;deg;\")        #peale temperatuuri on t\u00fchik ja s\u00fcmbol\r\ntemp = tekst[temp_algus:deg]       #l\u00f5ikame temperatuuri v\u00e4lja\r\n \r\n#v\u00e4ljastame kuup\u00e4eva ja keskmise temperatuuri\r\nprint(str(p\u00e4ev)+\".\"+str(kuu)+\".\"+str(aasta)+\": \"+str(temp))<\/pre>\r\nUuri erinevate p\u00e4evade keskmisi temperatuure. Kui palju erineb 2013. aasta j\u00f5ulup\u00e4eva keskmine 2014. aasta jaanip\u00e4eva keskmisest?\r\n<h2>Veebilehitseja avamine<\/h2>\r\n<p class=\"vspace\">Pythoni programmi saab panna veebilehitsejat avama:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from webbrowser import *\r\nopen(\"www.cs.ut.ee\")<\/pre>\r\nAvame programselt lehek\u00fclje, mis n\u00e4itab, mis on \u00f5igekeelsuss\u00f5nastikus kirjas s\u00f5na \"programmeerimine\" kohta (kui kasutame s\u00f5nastikus otsingut, ilmub aadressireale t\u00e4pne aadress, mida programmis kasutada):\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from webbrowser import *\r\naadress = \"http:\/\/www.eki.ee\/dict\/qs\/index.cgi?Q=programmeerimine\"\r\nopen (aadress)<\/pre>\r\n<p class=\"vspace\">V\u00f5ime ka otsis\u00f5na programmi kasutajalt k\u00fcsida:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from webbrowser import *\r\nsona = input(\"Sisestage s\u00f5na: \")\r\naadress = \"http:\/\/www.eki.ee\/dict\/qs\/index.cgi?Q=\" + sona\r\nopen(aadress)<\/pre>\r\n&nbsp;\r\n\r\n&nbsp;","rendered":"<h2>Veebis on fail<\/h2>\n<p class=\"vspace\">Mitu peat\u00fckki tagasi tutvusime v\u00f5imalusega oma arvutis olevast failist andmeid lugeda. T\u00e4nap\u00e4eval tuleb tihti ka ette, et soovitud fail paikneb kusagil internetis. Pythoniga ei ole veebist lugemine eriti raske. Kasutada saab k\u00e4sku <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">urlopen<\/code>, mis on vaja eelnevalt importida moodulist <em>urllib.request<\/em>.<\/p>\n<p class=\"vspace\">Kui meid huvitav info (antud juhul Juhan Liivi luuletuse &#8220;Ta lendab mesipuu poole&#8221; 1. salm) on aadressil <a href=\"https:\/\/kodu.ut.ee\/~marinai\/eprogalused\/mesipuu.txt\">https:\/\/kodu.ut.ee\/~marinai\/eprogalused\/mesipuu.txt<\/a>, siis saame selle k\u00e4tte j\u00e4rgmise programmiga:<\/p>\n<p><strong>N\u00e4iteprogramm. Faili lugemine veebist<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from urllib.request import urlopen\r\n \r\nfailVeebis = urlopen(\"https:\/\/kodu.ut.ee\/~marinai\/eprogalused\/mesipuu.txt\")\r\nbaidid = failVeebis.read()  # kogu fail baitidena\r\ntekst = baidid.decode()     # baitidest saab s\u00f5ne\r\nfailVeebis.close()\r\nprint(tekst)<\/pre>\n<p>Hetkel k\u00e4sitlesime kogu teksti tervikuna: algul baitidena, hiljem \u00fche s\u00f5nena. Kuna selles s\u00f5nes on ka reavahetused, siis kuvati s\u00f5ne mitme reana. Kui ridasid on tarvis k\u00e4sitleda eraldi s\u00f5nedena, siis on abiks funktsioon <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">splitlines<\/code>, mis jagab \u00fche s\u00f5ne reavahetuse kohtade j\u00e4rgi s\u00f5nede j\u00e4rjendiks:<\/p>\n<p><strong>N\u00e4iteprogramm. Faili lugemine veebist koos ridade eraldamisega<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from urllib.request import urlopen\r\n \r\nfailVeebis = urlopen(\"https:\/\/kodu.ut.ee\/~marinai\/eprogalused\/mesipuu.txt\")\r\nbaidid = failVeebis.read()\r\ntekst = baidid.decode()            # baitidest saab s\u00f5ne\r\nridadeKaupa = tekst.splitlines()   # s\u00f5ne jaotatakse reavahetuse kohtadelt\r\nfailVeebis.close()\r\nprint(ridadeKaupa[4])              # rida indeksiga 4<\/pre>\n<p>Rida indeksiga 4 (<code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ridadeKaupa[4]<\/code><\/code>) on tavam\u00f5istes 5. rida, sest loendamine algab nullist. Kuna tegemist on s\u00f5nega, siis saame indeksi abil k\u00e4tte selle \u00fcksikuid s\u00fcmboleid. N\u00e4iteks real indeksiga 4 saab s\u00fcmboli indeksiga 7 k\u00e4tte k\u00e4suga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ridadeKaupa[4][7]<\/code>. Proovi, mis s\u00fcmbol sellel kohal on.<\/p>\n<h2>Kindel struktuur. HTML<\/h2>\n<p class=\"vspace\">Eelmises n\u00e4ites lugesime veebist ilma vorminduseta tekstifaili. Suur osa veebis olevatest failidest on keerulisema struktuuriga, sageli sellisega, kus lehek\u00fclje l\u00e4htekood on tavalisele vaatajale arusaamatu. Enamjaolt on l\u00e4htekoodis arvestatud sellega, et veebilehitseja muudaks selle inimesele m\u00f5istetavaks v\u00e4ljundiks. N\u00e4iteks Tartu \u00dclikooli arvutiteaduse instituudi veebileht algab nii:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"et\" dir=\"ltr\"&gt;\r\n&lt;head&gt;\r\n  &lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\" \/&gt;<\/pre>\n<p class=\"vspace\">Esimese rida <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">!DOCTYPE html<\/code><\/code> t\u00e4histab, et tegemist on HTML-keelse tekstiga. HTML (<em>HyperText Markup Language<\/em>) on ilmselt levinuim veebilehtede loomisel kasutatav keel. (Loe lisaks <a class=\"urllink\" href=\"https:\/\/et.wikipedia.org\/wiki\/HTML\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/et.wikipedia.org\/wiki\/HTML<\/a>). Teisel real n\u00e4idatakse, et keel on eesti keel <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">lang=\"et\"<\/code><\/code> ja tekst on vasakult paremale (<code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">dir=\"ltr\",<\/code><\/code> <em>Left-to-right<\/em>). Neljandal real on n\u00e4iteks n\u00e4ha, et teksti kodeering on UTF-8 (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">charset=utf-8<\/code>).<\/p>\n<p class=\"vspace\">HTML-keeles on olulisel kohal m\u00e4rgendamine <em>(markup).<\/em> M\u00e4rgendi algust ja l\u00f5ppu t\u00e4histavad s\u00fcmbolid <strong>&lt;<\/strong> ja <strong>&gt;<\/strong> ning m\u00e4rgendi sisu j\u00e4rgi oskab veebilehitseja teksti sobivalt kuvada. Leidub teisigi m\u00e4rgendikeeli, kus m\u00e4rgendid on erinevalt esitatud (nt dokumentide kirjutamiseks kasutatav LaTeX).<\/p>\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-38\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-38\" class=\"h5p-iframe\" data-content-id=\"38\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"andmevahetus-1-keeled\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h3>Loetavate s\u00fcmbolite piiramine<\/h3>\n<p class=\"vspace\">Funktsioonile <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">read<\/code> saab anda ka argumendi, mis piirab loetavate m\u00e4rkide arvu. Kui argumenti pole, siis loetakse terve fail.<\/p>\n<p class=\"vspace\">J\u00e4rgmine programm loeb instituudi veebilehelt 121 esimest m\u00e4rki:<\/p>\n<p><strong>N\u00e4iteprogramm. Esimeste s\u00fcmbolite lugemine<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from urllib.request import urlopen\r\nfailVeebis = urlopen(\"http:\/\/www.cs.ut.ee\")\r\nbaidid = failVeebis.read(121)  # 121 esimest\r\ntekst = baidid.decode()        # baitidest saab s\u00f5ne\r\nprint(tekst)\r\nfailVeebis.close()<\/pre>\n<h3>Struktuuri t\u00f6\u00f6tlemine<\/h3>\n<p>Kui lehek\u00fclg on teatud struktuuriga (nt HTML-keeles, millega tutvusime eespool), siis saab kirjutada programmi, mis otsib sealt huvipakkuvaid andmeid. Ka v\u00f5ib lehek\u00fclje aadressis olla aasta, kuu ja kuup\u00e4ev (n\u00e4iteks<br \/>\n<a href=\"http:\/\/meteo.physic.ut.ee\/et\/showperiod.php?type=setmonth&amp;year=2018&amp;month=10&amp;m=24\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/meteo.physic.ut.ee\/et\/showperiod.php?type=setmonth&amp;year=2018&amp;month=10&amp;m=24<\/a>). J\u00e4rgmine programm loeb aadressilt <a class=\"urllink\" href=\"http:\/\/meteo.physic.ut.ee\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/meteo.physic.ut.ee\/<\/a> \u00fche valitud kuup\u00e4eva andmed ja leiab sealt selle p\u00e4eva keskmise temperatuuri:<\/p>\n<p><strong>N\u00e4iteprogamm. Keskmise \u00f5hutemperatuuri lugemine<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from urllib.request import urlopen\r\n \r\n#valitud kuup\u00e4ev\r\np\u00e4ev = 24\r\nkuu = 10\r\naasta = 2018\r\n \r\n#paneme lingi kokku\r\nvastus = urlopen(\"http:\/\/meteo.physic.ut.ee\/et\/showperiod.php?type=setday&amp;year=\"+str(aasta)+\"&amp;month=\"+str(kuu)+\"&amp;day=\"+str(p\u00e4ev))\r\n#loeme terve faili\r\nbaidid = vastus.read()\r\ntekst = baidid.decode()\r\n \r\n#otsime failis s\u00f5na 'keskmine', mis on \u00fcmbritsetud HTML-m\u00e4rgenditega\r\notsitav = \"&lt;SMALL&gt;keskmine&lt;\/SMALL&gt;&lt;BR&gt;&lt;B&gt;\"\r\nalgus = tekst.index(otsitav)       #meetod index tagastab otsitava s\u00f5na positsiooni alguse\r\ntemp_algus = algus + len(otsitav)  #indeks, kust tekstis v\u00f5ib leida temperatuuri\r\ndeg = tekst.index(\" &amp;deg;\")        #peale temperatuuri on t\u00fchik ja s\u00fcmbol\r\ntemp = tekst[temp_algus:deg]       #l\u00f5ikame temperatuuri v\u00e4lja\r\n \r\n#v\u00e4ljastame kuup\u00e4eva ja keskmise temperatuuri\r\nprint(str(p\u00e4ev)+\".\"+str(kuu)+\".\"+str(aasta)+\": \"+str(temp))<\/pre>\n<p>Uuri erinevate p\u00e4evade keskmisi temperatuure. Kui palju erineb 2013. aasta j\u00f5ulup\u00e4eva keskmine 2014. aasta jaanip\u00e4eva keskmisest?<\/p>\n<h2>Veebilehitseja avamine<\/h2>\n<p class=\"vspace\">Pythoni programmi saab panna veebilehitsejat avama:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from webbrowser import *\r\nopen(\"www.cs.ut.ee\")<\/pre>\n<p>Avame programselt lehek\u00fclje, mis n\u00e4itab, mis on \u00f5igekeelsuss\u00f5nastikus kirjas s\u00f5na &#8220;programmeerimine&#8221; kohta (kui kasutame s\u00f5nastikus otsingut, ilmub aadressireale t\u00e4pne aadress, mida programmis kasutada):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from webbrowser import *\r\naadress = \"http:\/\/www.eki.ee\/dict\/qs\/index.cgi?Q=programmeerimine\"\r\nopen (aadress)<\/pre>\n<p class=\"vspace\">V\u00f5ime ka otsis\u00f5na programmi kasutajalt k\u00fcsida:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from webbrowser import *\r\nsona = input(\"Sisestage s\u00f5na: \")\r\naadress = \"http:\/\/www.eki.ee\/dict\/qs\/index.cgi?Q=\" + sona\r\nopen(aadress)<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"author":12,"menu_order":1,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-235","chapter","type-chapter","status-publish","hentry"],"part":233,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/users\/12"}],"version-history":[{"count":11,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/235\/revisions"}],"predecessor-version":[{"id":569,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/235\/revisions\/569"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/parts\/233"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/235\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/media?parent=235"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapter-type?post=235"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/contributor?post=235"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/license?post=235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}