{"id":118,"date":"2021-10-04T15:08:33","date_gmt":"2021-10-04T15:08:33","guid":{"rendered":"https:\/\/christoph-schmalfuss.de\/blog\/?p=118"},"modified":"2021-10-22T11:06:06","modified_gmt":"2021-10-22T11:06:06","slug":"tutorial-automation-mit-python","status":"publish","type":"post","link":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/","title":{"rendered":"Tutorial: Automation mit Python"},"content":{"rendered":"\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Python Tutorial: \ud83c\udf0d Web-Automatisierung mit Selenium  | Einfaches Tutorial f\u00fcr Neulinge (Deutsch)\" width=\"688\" height=\"387\" src=\"https:\/\/www.youtube.com\/embed\/gRMbCvQgOoU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Immer wieder werde ich in den Kommentaren gefragt, wie man einen Browser fernsteuern kann. Und genau das lernen wir heute. Ich bin Chris &#8211; und das ist Programmieren mit Chris. Viel Spa\u00df!<\/p>\n\n\n\n<p>Das Zauberwort f\u00fcr solche Aufgaben lautet Automation. Dank Automation k\u00f6nnen wir fast jede Art von Nutzerinterkation auf einer Website simulieren. Wir k\u00f6nnen also Websiten aufrufen, uns auf Seiten einloggen, bestimmte Tasten dr\u00fccken, Scrollen, Texte posten, Bilder liken, Aktien verkaufen, Arzttermine buchen usw. Und das beste: Die Befehle, die wir daf\u00fcr brauchen, sind immer die gleichen, egal ob wir auf Ebay, Amazon oder jeder anderen Seite sind. Wir machen das heute am Beispiel der Wikipedia, weil man anhand dieser Seite die Grundlagen besonders leicht lernen kann.<\/p>\n\n\n\n<p>Alles was wir daf\u00fcr brauchen ist ein halbwegs aktueller Webbrowser, also z.B. Google Chrome und ein sogeannter Webdriver. Ein Webdriver macht es m\u00f6glich, dass die Befehle, die wir z.B. mit Python programmieren, vom Browser ausgef\u00fchrt werden k\u00f6nnen.<\/p>\n\n\n\n<p>Wichtig dabei: Der Webdriver und der Browser m\u00fcssen die selbe Version haben. Schauen wir deshalb mal nach, welche Version von Chrome wir eigentlich haben.<\/p>\n\n\n\n<p>Mit der Versionsnummer im Gep\u00e4ck gehen laden wir uns jetzt einen Webdriver herunter. Daf\u00fcr gehen wir auf <code>chromedriver.chromium.org<\/code>, den Link findet ihr wie immer in der Videobeschreibung.<\/p>\n\n\n\n<p>Hier finden wir jetzt die passende Version und laden sie herunter.<\/p>\n\n\n\n<p>Als n\u00e4chstes w\u00e4hlen wir unser Betriebssystem aus. Bei mir ist das jetzt MacOS mit M1 Prozessor, wenn ihr aber z.B. Windows w\u00e4hlt ihr hier einfach die Windows-Version.<\/p>\n\n\n\n<p>Weiter geht es jetzt im Quellcode.<\/p>\n\n\n\n<p>Als n\u00e4chstes installieren wir die ben\u00f6tigten Module. Wir verwenden heute die Module <code>time<\/code>und <code>selenium<\/code>. time ist immer schon vorinstalliert, selenium noch nicht. Deshalb gehe ich in mein Terminal und tippe ein:<\/p>\n\n\n\n<p><code>pip3 install selenium<\/code><\/p>\n\n\n\n<p>Und dann k\u00f6nnen wir uns beide Module auch gleich importieren. Ich gehe also in mein Skript und tippe ein:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import&nbsp;time<br>from&nbsp;selenium&nbsp;import&nbsp;webdriver<\/pre>\n\n\n\n<p>Als n\u00e4chstes m\u00fcssen wir unserem Computer mitteilen, wo sich die Webdriver datei befindet. Und ich finde es immer ganz praktisch, wenn der Webdriver einfach mit im Projektordner liegt. Ich ziehe jetzt also einfach die Webdriver-Datei in den Hauptordner des Projektes. Und jetzt gebe ich Bescheid, dass sich genau dort die Webdriver-Datei befindet.<\/p>\n\n\n\n<p><code>driver = webdriver.Chrome('.\/chromedriver')<\/code><\/p>\n\n\n\n<p>Und jetzt k\u00f6nnen wir auch schon eine Website aufrufen. Websiten \u00f6ffnen wir immer mit dem Befehl <code>get<\/code>.<\/p>\n\n\n\n<p><code>driver.get('https:\/\/www.wikipedia.de')<\/code><\/p>\n\n\n\n<p>Als n\u00e4chstes macht es Sinn, eine kleine Verz\u00f6gerung einzubauen. Einerseits gehen wir damit sicher, dass die Seite auch wirklich vollst\u00e4ndig geladen wird, bevor wir mit ihr interagieren. Und au\u00dferdem l\u00e4sst das unsere Interaktionen f\u00fcr die Website menschlicher wirken. Und das ist nat\u00fcrlich praktisch, um nicht als Bot erkannt zu werden.<\/p>\n\n\n\n<p><code>time.sleep(5)<\/code><\/p>\n\n\n\n<p>Jetzt wollen wir in die Suchleiste einen Begriff eingeben. Tastatureingaben k\u00f6nnen wir auch ganz einfach \u00fcber unseren Webdriver schicken, wir m\u00fcssen vorher allerdings festlegen, wo der Text eingegeben werden soll.<\/p>\n\n\n\n<p>Daf\u00fcr mache ich auf das Element, mit dem ich interagieren will, einen Rechtsklick und klicke auf &#8218;Untersuchen&#8216;.<\/p>\n\n\n\n<p>Jetzt wird mir das Element im Quellcode angezeigt. Und hier sieht man schon, dass die Suchleisten sowohl einen namen als auch eine id hat. Und \u00fcber beides k\u00f6nnte ich die Suchleiste jetzt identifizieren. Wir machen das mal am Beispiel der id.<\/p>\n\n\n\n<p><code>search_bar = driver.find_element_by_id('txtSearch')<\/code><\/p>\n\n\n\n<p>Als n\u00e4chstes lassen wir automatisiert etwas in die Suchleiste eintippen. Und das funktioniert mit dem Befehl <code>send_keys<\/code>.<\/p>\n\n\n\n<p><code>search_bar.send_keys('Salzburg')<\/code><\/p>\n\n\n\n<p>Wir k\u00f6nnten jetzt \u00fcbrigens einfach noch eine Enter-Taste hinterherschicken, um unsere Eingabe zu best\u00e4titigen. Ich m\u00f6chte euch aber stattdessen zeigen, wie man auf Suchen-Button klickt, damit ihr auch das mit dem Klicken schon einmal gesehen habt. Auch daf\u00fcr suche ich wieder das Element und untersuche es. Wie ihr seht, hat das Element jetzt weder einen namen noch eine id. Ist aber kein Problem, denn wir k\u00f6nnen die Suchleiste immer noch \u00fcber ihre Klasse identifizieren. Die Klasse hei\u00dft einfach search-icon und diese Information nehmen wir uns mit in unser Skript.<\/p>\n\n\n\n<p><code>search_button = driver.find_element_by_class_name('search-icon')<\/code><\/p>\n\n\n\n<p>Und jetzt m\u00fcssen wir nur noch Klicken. Das geht passenderweise mit der Click-Funktion.<\/p>\n\n\n\n<p><code>search_button.click()<\/code><\/p>\n\n\n\n<p>Unser bot kann jetzt also schon klicken und Seiten aufrufen. Und jetzt lesen wir spa\u00dfenshalber noch Informationen aus der Website aus.<\/p>\n\n\n\n<p>Sagen wir also, wir wollen den gesamten Artikel kopieren. Auch daf\u00fcr untersuche ich wieder die Website. Offensichtlich hat der Artikel die Klassenbezeichnung <code>mw-body<\/code>. Und \u00fcber diese kann ich das Element jetzt wieder finden.<\/p>\n\n\n\n<p><code>page = driver.find_element_by_class_name('mw-body')<\/code><\/p>\n\n\n\n<p>Den Text lasse ich mir dann anschlie\u00dfend ausgeben und beende dann den Webdriver.<\/p>\n\n\n\n<p><code>print(page.text)<\/code><\/p>\n\n\n\n<p><code>driver.quit()<\/code><\/p>\n\n\n\n<p>[ausprobieren]<\/p>\n\n\n\n<p>Okay, soviel erstmal f\u00fcr heute. Fragen und W\u00fcnsche k\u00f6nnt ihr wie immer in der Kommentarspalte dalassen, ich antworte bei passenden Fragen mit kurzen Videoantworten. Und jetzt viel Spa\u00df beim Ausprobieren, bleibt neugierig und bis bald!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 Kompletter Quellcode<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import\u00a0time\nfrom\u00a0selenium\u00a0import\u00a0webdriver\n\u200b\ndriver\u00a0=\u00a0webdriver.Chrome(&#39;.\/chromedriver&#39;)\n\u200b\ndriver.get(&#39;https:\/\/www.wikipedia.de&#39;)\ntime.sleep(5)\n\u200b\nsearch_bar\u00a0=\u00a0driver.find_element_by_id(&#39;txtSearch&#39;)\nsearch_bar.send_keys(&#39;Salzburg&#39;)\nsearch_button\u00a0=\u00a0driver.find_element_by_class_name(&#39;search-icon&#39;)\nsearch_button.click()\n\u200b\npage\u00a0=\u00a0driver.find_element_by_class_name(&#39;mw-body&#39;)\nprint(page.text)\n\u200b\ndriver.quit()<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Immer wieder werde ich in den Kommentaren gefragt, wie man einen Browser fernsteuern kann. Und genau das lernen wir heute.&hellip;<\/p>\n","protected":false},"author":1,"featured_media":119,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-118","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bots-und-automatisierung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tutorial: Automation mit Python &mdash; Programmieren mit Chris<\/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:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Automation mit Python &mdash; Programmieren mit Chris\" \/>\n<meta property=\"og:description\" content=\"Immer wieder werde ich in den Kommentaren gefragt, wie man einen Browser fernsteuern kann. Und genau das lernen wir heute.&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Programmieren mit Chris\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-04T15:08:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-22T11:06:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/10\/Thumbnail-automatisierung.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@chrischmayt\" \/>\n<meta name=\"twitter:site\" content=\"@chrischmayt\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"chris\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#organization\",\"name\":\"Programmieren mit Chris\",\"url\":\"https:\/\/christoph-schmalfuss.de\/blog\/\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/christoph-schmalfu\\u00df-52a93b209\/\",\"https:\/\/www.youtube.com\/channel\/UC0faHRYVxDn7chW573SSh8A\",\"https:\/\/twitter.com\/chrischmayt\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#logo\",\"inLanguage\":\"de\",\"url\":\"http:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/programmieren-mit-chris-logo-ohne-schatten-3000x3000-transparent.png\",\"contentUrl\":\"http:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/programmieren-mit-chris-logo-ohne-schatten-3000x3000-transparent.png\",\"width\":3000,\"height\":3000,\"caption\":\"Programmieren mit Chris\"},\"image\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#website\",\"url\":\"https:\/\/christoph-schmalfuss.de\/blog\/\",\"name\":\"Programmieren lernen mit Chris\",\"description\":\"Tutorials | Vlogs\",\"publisher\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/christoph-schmalfuss.de\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#primaryimage\",\"inLanguage\":\"de\",\"url\":\"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/10\/Thumbnail-automatisierung.png\",\"contentUrl\":\"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/10\/Thumbnail-automatisierung.png\",\"width\":1280,\"height\":720,\"caption\":\"Das Bild zeigt ein Programmfenster, in welchem \\\"Python Automatisierung\\\" steht.\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#webpage\",\"url\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/\",\"name\":\"Tutorial: Automation mit Python &mdash; Programmieren mit Chris\",\"isPartOf\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#primaryimage\"},\"datePublished\":\"2021-10-04T15:08:33+00:00\",\"dateModified\":\"2021-10-22T11:06:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/christoph-schmalfuss.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Automation mit Python\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#webpage\"},\"author\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#\/schema\/person\/b64d7415ba9ac63f395509d7097012bb\"},\"headline\":\"Tutorial: Automation mit Python\",\"datePublished\":\"2021-10-04T15:08:33+00:00\",\"dateModified\":\"2021-10-22T11:06:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#webpage\"},\"wordCount\":785,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/10\/Thumbnail-automatisierung.png\",\"articleSection\":[\"Bots und Automatisierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#\/schema\/person\/b64d7415ba9ac63f395509d7097012bb\",\"name\":\"chris\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/176e906a49456dda30761449564e6e69d6b070f731880e6ace0d8e2d1746f1b6?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/176e906a49456dda30761449564e6e69d6b070f731880e6ace0d8e2d1746f1b6?s=96&d=retro&r=g\",\"caption\":\"chris\"},\"sameAs\":[\"http:\/\/christoph-schmalfuss.de\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Automation mit Python &mdash; Programmieren mit Chris","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:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/","og_locale":"de_DE","og_type":"article","og_title":"Tutorial: Automation mit Python &mdash; Programmieren mit Chris","og_description":"Immer wieder werde ich in den Kommentaren gefragt, wie man einen Browser fernsteuern kann. Und genau das lernen wir heute.&hellip;","og_url":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/","og_site_name":"Programmieren mit Chris","article_published_time":"2021-10-04T15:08:33+00:00","article_modified_time":"2021-10-22T11:06:06+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/10\/Thumbnail-automatisierung.png","path":"\/var\/www\/virtual\/schmalin\/html\/blog\/wp-content\/uploads\/2021\/10\/Thumbnail-automatisierung.png","size":"full","id":119,"alt":"Das Bild zeigt ein Programmfenster, in welchem \"Python Automatisierung\" steht.","pixels":921600,"type":"image\/png"}],"twitter_card":"summary_large_image","twitter_creator":"@chrischmayt","twitter_site":"@chrischmayt","twitter_misc":{"Verfasst von":"chris","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#organization","name":"Programmieren mit Chris","url":"https:\/\/christoph-schmalfuss.de\/blog\/","sameAs":["https:\/\/www.linkedin.com\/in\/christoph-schmalfu\u00df-52a93b209\/","https:\/\/www.youtube.com\/channel\/UC0faHRYVxDn7chW573SSh8A","https:\/\/twitter.com\/chrischmayt"],"logo":{"@type":"ImageObject","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#logo","inLanguage":"de","url":"http:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/programmieren-mit-chris-logo-ohne-schatten-3000x3000-transparent.png","contentUrl":"http:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/programmieren-mit-chris-logo-ohne-schatten-3000x3000-transparent.png","width":3000,"height":3000,"caption":"Programmieren mit Chris"},"image":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#logo"}},{"@type":"WebSite","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#website","url":"https:\/\/christoph-schmalfuss.de\/blog\/","name":"Programmieren lernen mit Chris","description":"Tutorials | Vlogs","publisher":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/christoph-schmalfuss.de\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"ImageObject","@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#primaryimage","inLanguage":"de","url":"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/10\/Thumbnail-automatisierung.png","contentUrl":"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/10\/Thumbnail-automatisierung.png","width":1280,"height":720,"caption":"Das Bild zeigt ein Programmfenster, in welchem \"Python Automatisierung\" steht."},{"@type":"WebPage","@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#webpage","url":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/","name":"Tutorial: Automation mit Python &mdash; Programmieren mit Chris","isPartOf":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#primaryimage"},"datePublished":"2021-10-04T15:08:33+00:00","dateModified":"2021-10-22T11:06:06+00:00","breadcrumb":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/christoph-schmalfuss.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Automation mit Python"}]},{"@type":"Article","@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#article","isPartOf":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#webpage"},"author":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#\/schema\/person\/b64d7415ba9ac63f395509d7097012bb"},"headline":"Tutorial: Automation mit Python","datePublished":"2021-10-04T15:08:33+00:00","dateModified":"2021-10-22T11:06:06+00:00","mainEntityOfPage":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#webpage"},"wordCount":785,"commentCount":0,"publisher":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#organization"},"image":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#primaryimage"},"thumbnailUrl":"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/10\/Thumbnail-automatisierung.png","articleSection":["Bots und Automatisierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/christoph-schmalfuss.de\/blog\/2021\/10\/04\/tutorial-automation-mit-python\/#respond"]}]},{"@type":"Person","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#\/schema\/person\/b64d7415ba9ac63f395509d7097012bb","name":"chris","image":{"@type":"ImageObject","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#personlogo","inLanguage":"de","url":"https:\/\/secure.gravatar.com\/avatar\/176e906a49456dda30761449564e6e69d6b070f731880e6ace0d8e2d1746f1b6?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/176e906a49456dda30761449564e6e69d6b070f731880e6ace0d8e2d1746f1b6?s=96&d=retro&r=g","caption":"chris"},"sameAs":["http:\/\/christoph-schmalfuss.de\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/posts\/118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/comments?post=118"}],"version-history":[{"count":2,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/posts\/118\/revisions"}],"predecessor-version":[{"id":391,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/posts\/118\/revisions\/391"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/media\/119"}],"wp:attachment":[{"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/media?parent=118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/categories?post=118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/tags?post=118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}