{"id":1853,"date":"2023-02-26T16:59:43","date_gmt":"2023-02-26T14:59:43","guid":{"rendered":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/?p=1853"},"modified":"2023-03-03T11:50:39","modified_gmt":"2023-03-03T09:50:39","slug":"web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle","status":"publish","type":"post","link":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/","title":{"rendered":"Web scraping &#8211; Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle"},"content":{"rendered":"\n<p>Web scraping eli verkkosivujen haravointi on menetelm\u00e4, jolla tietoa voidaan ker\u00e4t\u00e4 automaattisesti internetin verkkosivuilta. Sen avulla voi hakea tietoa eri l\u00e4hteist\u00e4, kuten julkisen liikenteen aikatauluista, s\u00e4hk\u00f6n spot-hinnoista tai vaikkapa ravintoloiden lounaslistoista. Haluttu tieto saadaan ker\u00e4tty\u00e4 automaattisesti ja tallennettua toiseen muotoon tiedon jatkok\u00e4sittely\u00e4 tai eri esitysmuotoja varten.<\/p>\n\n\n\n<p>Esimerkkin\u00e4 toteutetaan kouluviikon ruokalistan haku ja sen esitt\u00e4minen \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6ll\u00e4. T\u00e4ll\u00f6in perheen lapset voivat tarkistaa ruokalistan nopeasti ilman vanhempien apua, eik\u00e4 teht\u00e4v\u00e4\u00e4n tarvitse haeskella tietoa paikallislehdist\u00e4 tai ateriapalveluiden sivustoilta.<\/p>\n\n\n\n<p>Homma alkaa etsim\u00e4ll\u00e4 haluttu tieto alkuper\u00e4iselt\u00e4 web-sivustolta, t\u00e4ss\u00e4 tapauksessa P\u00e4ij\u00e4t-H\u00e4meen ateriapalveluiden sivuilta. Modernit web-sivut on toteutettu dynaamisina, eli ne hakevat n\u00e4ytett\u00e4v\u00e4\u00e4 tietoa eri l\u00e4hteist\u00e4. Pelkk\u00e4 sivun l\u00e4hdekoodin katselu (View page source) ei siis useinkaan riit\u00e4 halutun tiedon l\u00f6yt\u00e4miseksi vaan on k\u00e4ytett\u00e4v\u00e4 selaimen Inspect -ty\u00f6kalua.<\/p>\n\n\n\n<p>Esimerksi Chromen Inspect -ty\u00f6kalu k\u00e4ynnistyy klikkaamalla sivustolla hiiren oikealla napilla ja valitsemalla <em>Inspect<\/em>. Ikkunan oikeaan reunaan aukeavan n\u00e4kym\u00e4n yl\u00e4reunassa olevan <em>Network<\/em> -v\u00e4lilehden takaa l\u00f6ytyy kaikki kyseiseen sivuun liittyv\u00e4t tiedostot ja tietol\u00e4hteet. T\u00e4ss\u00e4 tapauksessa kuluvan viikon ruokalista l\u00f6ytyy <a href=\"https:\/\/www.json.org\/json-en.html\">JSON<\/a>-muotoisesta tiedostosta: <em>8e191812-75a7-ed11-8153-0050568547fe.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Chromen-Inspect-tyokalu.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"562\" src=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Chromen-Inspect-tyokalu-1024x562.png\" alt=\"Chromen Inspect-ty\u00f6kalu\" class=\"wp-image-1854\" srcset=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Chromen-Inspect-tyokalu-1024x562.png 1024w, https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Chromen-Inspect-tyokalu-300x165.png 300w, https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Chromen-Inspect-tyokalu-768x421.png 768w, https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Chromen-Inspect-tyokalu-1536x843.png 1536w, https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Chromen-Inspect-tyokalu-492x270.png 492w, https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Chromen-Inspect-tyokalu.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Chromen Inspect-ty\u00f6kalu<\/figcaption><\/figure>\n\n\n\n<p>Kyseist\u00e4 tiedostoa klikkaamalla hiiren oikealla napilla ja valitsemalla<em> Copy -&gt; Copy as cURL<\/em>, saadaan leikep\u00f6yd\u00e4lle <a href=\"https:\/\/curl.se\/\">cURL<\/a> -komento, joka hakee kyseisen tiedoston ja n\u00e4ytt\u00e4\u00e4 sen sis\u00e4ll\u00f6n ruudulla.  Komennossa on oletuksena useita nk. header -optioita, joista <em>User-Agent<\/em> on t\u00e4ss\u00e4 tapauksessa ainoa tarpeellinen. Komennosta voidaan tehd\u00e4 my\u00f6s <em>ruokalista.sh<\/em> &#8211;<a href=\"https:\/\/www.shellscript.sh\/\">skripti<\/a>, joka tallentaa kyseisen tiedon <em>ruokalista.json<\/em> -tiedostoon:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl 'https:\/\/ruokalistat.lahti.fi\/AromiStorage\/blob\/menu\/8e191812-75a7-ed11-8153-0050568547fe' \\\n  -H 'User-Agent: Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/108.0.0.0 Safari\/537.36' \\\n&gt; ruokalista.json<\/code><\/pre>\n\n\n\n<p>Edell\u00e4 mainittu skripti voidaan ajastaa suoritettavaksi linux -palvelimen <em>cron<\/em>:ssa esimerkiksi joka maanantai klo yksi y\u00f6ll\u00e4, jolloin ruokalista on vaihtunut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 1 * * 1   user   \/path\/to\/ruokalista.sh<\/code><\/pre>\n\n\n\n<p>Tiedon esitt\u00e4mist\u00e4 varten tehd\u00e4\u00e4n t\u00e4ss\u00e4 tapauksessa yksinkertainen <em>html<\/em> -sivu, johon tiedot luetaan ruokalista.json -tiedostosta <em>JavaScriptin<\/em> avulla:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n  &lt;meta charset=\"utf-8\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\n&lt;div id=\"ruokalista\"&gt;&lt;\/div&gt;\n\n&lt;script&gt;\n  fetch('ruokalista.json', {cache: \"no-cache\"})\n    .then((response) =&gt; response.json())\n    .then((data) =&gt; appendData(data));\n\n  function appendData(data) {\n    var table = \"&lt;table&gt;\";\n    table += `&lt;tr&gt;&lt;td&gt;Ma&lt;\/td&gt;&lt;td&gt;${data.Days&#91;0].Meals&#91;0].Name}&lt;\/td&gt;&lt;\/tr&gt;`;\n    table += `&lt;tr&gt;&lt;td&gt;Ti&lt;\/td&gt;&lt;td&gt;${data.Days&#91;1].Meals&#91;0].Name}&lt;\/td&gt;&lt;\/tr&gt;`;\n    table += `&lt;tr&gt;&lt;td&gt;Ke&lt;\/td&gt;&lt;td&gt;${data.Days&#91;2].Meals&#91;0].Name}&lt;\/td&gt;&lt;\/tr&gt;`;\n    table += `&lt;tr&gt;&lt;td&gt;To&lt;\/td&gt;&lt;td&gt;${data.Days&#91;3].Meals&#91;0].Name}&lt;\/td&gt;&lt;\/tr&gt;`;\n    table += `&lt;tr&gt;&lt;td&gt;Pe&lt;\/td&gt;&lt;td&gt;${data.Days&#91;4].Meals&#91;0].Name}&lt;\/td&gt;&lt;\/tr&gt;`;\n    table += \"&lt;\/table&gt;\";\n    document.getElementById(\"ruokalista\").innerHTML = table;\n  }\n&lt;\/script&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<p>Kyseinen html -sivu voidaan t\u00e4m\u00e4n j\u00e4lkeen n\u00e4ytt\u00e4\u00e4 esimerkiksi Home Assistantin -k\u00e4ytt\u00f6liittym\u00e4ss\u00e4 iFrame -kortin avulla tai omassa tapauksessani <a href=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/tileboard-vaihtoehtoinen-kayttoliittyma-home-assistantin-seinapaneelille\/\">TileBoardin<\/a> avulla \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6ll\u00e4:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"442\" height=\"217\" src=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Ruokalista-ja-Tileboard.png\" alt=\"Ruokalista ja Tileboard\" class=\"wp-image-1856\" srcset=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Ruokalista-ja-Tileboard.png 442w, https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Ruokalista-ja-Tileboard-300x147.png 300w\" sizes=\"auto, (max-width: 442px) 100vw, 442px\" \/><figcaption class=\"wp-element-caption\">Ruokalista ja Tileboard<\/figcaption><\/figure><\/div>","protected":false},"excerpt":{"rendered":"<p>Web scraping eli verkkosivujen haravointi on menetelm\u00e4, jolla tietoa voidaan ker\u00e4t\u00e4 automaattisesti internetin verkkosivuilta. Sen avulla voi hakea tietoa eri l\u00e4hteist\u00e4, kuten julkisen liikenteen aikatauluista, s\u00e4hk\u00f6n spot-hinnoista tai vaikkapa ravintoloiden lounaslistoista. Haluttu tieto saadaan ker\u00e4tty\u00e4 automaattisesti ja tallennettua toiseen muotoon tiedon jatkok\u00e4sittely\u00e4 tai eri esitysmuotoja varten. Esimerkkin\u00e4 toteutetaan kouluviikon ruokalistan haku ja sen esitt\u00e4minen \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6ll\u00e4. T\u00e4ll\u00f6in perheen lapset voivat tarkistaa ruokalistan nopeasti ilman vanhempien apua, eik\u00e4 teht\u00e4v\u00e4\u00e4n tarvitse haeskella tietoa paikallislehdist\u00e4 tai ateriapalveluiden sivustoilta. Homma alkaa etsim\u00e4ll\u00e4 haluttu&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1859,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[72,1],"tags":[9,79],"class_list":["post-1853","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kotiautomaatio","category-yleinen","tag-home-assistant","tag-tileboard"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Web scraping - Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle - Kotiautomaatio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Web scraping - Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle - Kotiautomaatio\" \/>\n<meta property=\"og:description\" content=\"Web scraping eli verkkosivujen haravointi on menetelm\u00e4, jolla tietoa voidaan ker\u00e4t\u00e4 automaattisesti internetin verkkosivuilta. Sen avulla voi hakea tietoa eri l\u00e4hteist\u00e4, kuten julkisen liikenteen aikatauluista, s\u00e4hk\u00f6n spot-hinnoista tai vaikkapa ravintoloiden lounaslistoista. Haluttu tieto saadaan ker\u00e4tty\u00e4 automaattisesti ja tallennettua toiseen muotoon tiedon jatkok\u00e4sittely\u00e4 tai eri esitysmuotoja varten. Esimerkkin\u00e4 toteutetaan kouluviikon ruokalistan haku ja sen esitt\u00e4minen \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6ll\u00e4. T\u00e4ll\u00f6in perheen lapset voivat tarkistaa ruokalistan nopeasti ilman vanhempien apua, eik\u00e4 teht\u00e4v\u00e4\u00e4n tarvitse haeskella tietoa paikallislehdist\u00e4 tai ateriapalveluiden sivustoilta. Homma alkaa etsim\u00e4ll\u00e4 haluttu... Read More Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/\" \/>\n<meta property=\"og:site_name\" content=\"Kotiautomaatio\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-26T14:59:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-03T09:50:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png\" \/>\n\t<meta property=\"og:image:width\" content=\"877\" \/>\n\t<meta property=\"og:image:height\" content=\"738\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kimmo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Kirjoittanut\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kimmo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Arvioitu lukuaika\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuuttia\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/\"},\"author\":{\"name\":\"Kimmo\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/person\/3ef6d1601b1934ae4ab1b79cf796f924\"},\"headline\":\"Web scraping &#8211; Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle\",\"datePublished\":\"2023-02-26T14:59:43+00:00\",\"dateModified\":\"2023-03-03T09:50:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/\"},\"wordCount\":355,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#organization\"},\"image\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png\",\"keywords\":[\"Home Assistant\",\"TileBoard\"],\"articleSection\":[\"Kotiautomaatio\"],\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/\",\"url\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/\",\"name\":\"Web scraping - Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle - Kotiautomaatio\",\"isPartOf\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png\",\"datePublished\":\"2023-02-26T14:59:43+00:00\",\"dateModified\":\"2023-03-03T09:50:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#breadcrumb\"},\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#primaryimage\",\"url\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png\",\"contentUrl\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png\",\"width\":877,\"height\":738,\"caption\":\"Webscraping\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Etusivu\",\"item\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web scraping &#8211; Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#website\",\"url\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/\",\"name\":\"Kotiautomaatio\",\"description\":\"Kirjoituksia \u00e4lykodin viritt\u00e4misest\u00e4 ja muusta rakentelusta\",\"publisher\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fi\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#organization\",\"name\":\"Kotiautomaatio\",\"url\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/03\/ThumbnailCog.png\",\"contentUrl\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/03\/ThumbnailCog.png\",\"width\":500,\"height\":500,\"caption\":\"Kotiautomaatio\"},\"image\":{\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.youtube.com\/@tinkerer535\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/person\/3ef6d1601b1934ae4ab1b79cf796f924\",\"name\":\"Kimmo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2340e6384cd8ac2b5108a72e5de9524ebe93108ca5608afa1e80dcdb8c7db7e7?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2340e6384cd8ac2b5108a72e5de9524ebe93108ca5608afa1e80dcdb8c7db7e7?s=96&d=wavatar&r=g\",\"caption\":\"Kimmo\"},\"description\":\"Is\u00e4, aviomies, s\u00e4\u00e4t\u00e4j\u00e4, rakentelija, ...\",\"sameAs\":[\"https:\/\/hyotynen.iki.fi\/\"],\"url\":\"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/author\/hyotynen\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Web scraping - Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle - Kotiautomaatio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/","og_locale":"fi_FI","og_type":"article","og_title":"Web scraping - Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle - Kotiautomaatio","og_description":"Web scraping eli verkkosivujen haravointi on menetelm\u00e4, jolla tietoa voidaan ker\u00e4t\u00e4 automaattisesti internetin verkkosivuilta. Sen avulla voi hakea tietoa eri l\u00e4hteist\u00e4, kuten julkisen liikenteen aikatauluista, s\u00e4hk\u00f6n spot-hinnoista tai vaikkapa ravintoloiden lounaslistoista. Haluttu tieto saadaan ker\u00e4tty\u00e4 automaattisesti ja tallennettua toiseen muotoon tiedon jatkok\u00e4sittely\u00e4 tai eri esitysmuotoja varten. Esimerkkin\u00e4 toteutetaan kouluviikon ruokalistan haku ja sen esitt\u00e4minen \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6ll\u00e4. T\u00e4ll\u00f6in perheen lapset voivat tarkistaa ruokalistan nopeasti ilman vanhempien apua, eik\u00e4 teht\u00e4v\u00e4\u00e4n tarvitse haeskella tietoa paikallislehdist\u00e4 tai ateriapalveluiden sivustoilta. Homma alkaa etsim\u00e4ll\u00e4 haluttu... Read More Read More","og_url":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/","og_site_name":"Kotiautomaatio","article_published_time":"2023-02-26T14:59:43+00:00","article_modified_time":"2023-03-03T09:50:39+00:00","og_image":[{"width":877,"height":738,"url":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png","type":"image\/png"}],"author":"Kimmo","twitter_card":"summary_large_image","twitter_misc":{"Kirjoittanut":"Kimmo","Arvioitu lukuaika":"3 minuuttia"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#article","isPartOf":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/"},"author":{"name":"Kimmo","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/person\/3ef6d1601b1934ae4ab1b79cf796f924"},"headline":"Web scraping &#8211; Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle","datePublished":"2023-02-26T14:59:43+00:00","dateModified":"2023-03-03T09:50:39+00:00","mainEntityOfPage":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/"},"wordCount":355,"commentCount":0,"publisher":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#organization"},"image":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#primaryimage"},"thumbnailUrl":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png","keywords":["Home Assistant","TileBoard"],"articleSection":["Kotiautomaatio"],"inLanguage":"fi","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/","url":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/","name":"Web scraping - Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle - Kotiautomaatio","isPartOf":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#primaryimage"},"image":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#primaryimage"},"thumbnailUrl":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png","datePublished":"2023-02-26T14:59:43+00:00","dateModified":"2023-03-03T09:50:39+00:00","breadcrumb":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#breadcrumb"},"inLanguage":"fi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/"]}]},{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#primaryimage","url":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png","contentUrl":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png","width":877,"height":738,"caption":"Webscraping"},{"@type":"BreadcrumbList","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/web-scraping-koulun-ruokalista-alykodin-ohjauspaneelin-naytolle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Etusivu","item":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/"},{"@type":"ListItem","position":2,"name":"Web scraping &#8211; Koulun ruokalista \u00e4lykodin ohjauspaneelin n\u00e4yt\u00f6lle"}]},{"@type":"WebSite","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#website","url":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/","name":"Kotiautomaatio","description":"Kirjoituksia \u00e4lykodin viritt\u00e4misest\u00e4 ja muusta rakentelusta","publisher":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fi"},{"@type":"Organization","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#organization","name":"Kotiautomaatio","url":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/","logo":{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/logo\/image\/","url":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/03\/ThumbnailCog.png","contentUrl":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/03\/ThumbnailCog.png","width":500,"height":500,"caption":"Kotiautomaatio"},"image":{"@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.youtube.com\/@tinkerer535"]},{"@type":"Person","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/person\/3ef6d1601b1934ae4ab1b79cf796f924","name":"Kimmo","image":{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2340e6384cd8ac2b5108a72e5de9524ebe93108ca5608afa1e80dcdb8c7db7e7?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2340e6384cd8ac2b5108a72e5de9524ebe93108ca5608afa1e80dcdb8c7db7e7?s=96&d=wavatar&r=g","caption":"Kimmo"},"description":"Is\u00e4, aviomies, s\u00e4\u00e4t\u00e4j\u00e4, rakentelija, ...","sameAs":["https:\/\/hyotynen.iki.fi\/"],"url":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/author\/hyotynen\/"}]}},"jetpack_featured_media_url":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-content\/uploads\/2023\/02\/Webscraping.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/posts\/1853","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/comments?post=1853"}],"version-history":[{"count":3,"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/posts\/1853\/revisions"}],"predecessor-version":[{"id":2221,"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/posts\/1853\/revisions\/2221"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/media\/1859"}],"wp:attachment":[{"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/media?parent=1853"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/categories?post=1853"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hyotynen.iki.fi\/kotiautomaatio\/wp-json\/wp\/v2\/tags?post=1853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}