Folgendes, ich hatte heute ein Vorstellungsgespräch als Applikationsentwickler LEHRLING und die Firma gab mir folgenden Auftrag, den sie will wissen wie weit meine Basiskenntnisse schon sind. Und zwar geht es um die webseite: krankenhaus.netdoktor.at
Folgendes hätte ich zu erledigen: Das Python Script greift auf eine URL zu und ladet den Quellcode der Seite. Dann durchsucht das Script den zuvor geladenen Quellcode und
extrahiert jeweils den Namen des Krankenhauses und die dazugehörigen Kontaktdaten wie Adresse, Telefon usw…
import requests
downloadUrl = 'https://krankenhaus.netdoktor.at'
req = requests.get(downloadUrl)
//Bin ich da schon auf den richtigen weg? Kann mir bitte jemand einen Hinweis geben?? Ich wäre sehr sehr dankbar!
Bitte um Hilfe!!!!!
Es geht hier um DEINE Kenntnisse. Nicht um unsere. Was glaubst du passiert, wenn du bei dieser Aufgabe bescheisst, und genommen wirst? Das die nicht merken, dass du keine Ahnung hast?
Entweder sind sie bereit in dich vom jetzigen Kenntnisstand zu investieren. Oder es wird eh ein unschönes Ende nehmen.
Und da sind wir ja noch nicht mal bei der moralischen Komponente des ganzen.
Entweder sind sie bereit in dich vom jetzigen Kenntnisstand zu investieren. Oder es wird eh ein unschönes Ende nehmen.
Und da sind wir ja noch nicht mal bei der moralischen Komponente des ganzen.
Konstanten schreibt man komplett GROSS, und benutze keine Abkürzungen, req ist auch eine komische Abkürzunge für response, woher kommt das q?
Und wenn Du beantworten kannst, was in `response` steht, dann bist Du auf dem richtigen Weg.
Code: Alles auswählen
import requests
HOSPITAL_URL = 'https://krankenhaus.netdoktor.at'
def main():
response = requests.get(HOSPITAL_URL)
if __name__ == "__main__":
main()
Hierher kommt das q: https://learndataanalysis.org/create-a- ... -tutorial/
-
- User
- Beiträge: 42
- Registriert: Sonntag 29. September 2019, 12:36
Lieber Sirius, ich habe eine Rückfrage zu deiner Antwort.Sirius3 hat geschrieben: Montag 15. Februar 2021, 18:02 Konstanten schreibt man komplett GROSS, und benutze keine Abkürzungen, req ist auch eine komische Abkürzunge für response, woher kommt das q?Und wenn Du beantworten kannst, was in `response` steht, dann bist Du auf dem richtigen Weg.Code: Alles auswählen
import requests HOSPITAL_URL = 'https://krankenhaus.netdoktor.at' def main(): response = requests.get(HOSPITAL_URL) if __name__ == "__main__": main()
Angenommen, man würde in die URL nachträglich noch Werte einfügen (z.b. mit Hilfe eines f-strings einen Suchbegriff etc.): Würde die URL dann noch als Konstante gelten? Oder würde man dabei von einer Variable sprechen? Ich denke da an so etwas wie:
Code: Alles auswählen
f'https://krankenhaus.netdoktor.at/search/city={city_name}'

Und suppermario: Ich bin da ganz bei __deetz__. Versuch lieber, dich allein durch die Aufgabe zu rätseln - das ist ja schließlich auch der Kern deines Alltags als Programmierer. Und um deine Frage dennoch zu beantworten: Ich denke, du bist auf dem richtigen Weg. Ich selbst würde auch mit requests arbeiten. Schau dir außerdem mal BeautifulSoup an. Damit kann man schön die Daten auseinandernehmen.
Viel Erfolg!
- __blackjack__
- User
- Beiträge: 14054
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@christheturtle: Das wäre eine Variable. Es sei denn `city_name` wäre eine Konstante (und müsste dann laut Konvention gross geschrieben werden).
Wobei man in diesem Beispiel die URL trotzdem als Konstante herausziehen würde. Entweder als Vorlage, oder den Konstanten Teil:
Wobei ich mich frage ob Du eventuell ein "?" im Beispiel vergessen hast und es eher so lauten würde, denn in der Regel sind so etwas ja Parameter in der URL:
Wobei man in diesem Beispiel die URL trotzdem als Konstante herausziehen würde. Entweder als Vorlage, oder den Konstanten Teil:
Code: Alles auswählen
CITY_SEARCH_URL_TEMPLATE = (
"https://krankenhaus.netdoktor.at/search/city={city_name}"
)
def main():
url = CITY_SEARCH_URL_TEMPLATE.format(city_name="Berlin")
# oder
CITY_SEARCH_URL = "https://krankenhaus.netdoktor.at/search/city="
def main():
url = CITY_SEARCH_URL + "Berlin"
Code: Alles auswählen
SEARCH_URL = "https://krankenhaus.netdoktor.at/search"
def main():
response = requests.get(SEARCH_URL, params={"city": "Berlin"})
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
- __blackjack__
- User
- Beiträge: 14054
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Um mal zur Ausgangsfrage zurück zu kommen: So schwer ist das letztlich nicht. Eine Lösung im Lisp-Dialekt Hy hat knapp 50 Zeilen:
Ausgabe:
Code: Alles auswählen
#!/usr/bin/env hy3
(import requests
[bs4 [BeautifulSoup]]
[hy.contrib.pprint [pprint]])
(setv URL "https://krankenhaus.netdoktor.at/")
(defn get-soup [page-number]
(setv response (requests.get (+ URL (str page-number))))
(.raise-for-status response)
(BeautifulSoup (. response content) "html.parser"))
(defn extract-hospital-nodes [soup]
(-> (.select-one soup "#hospitalsearch_results .results") (.find-all "li")))
(defn empty-hospital-nodes? [hospital-nodes]
(or (empty? hospital-nodes)
(-> (first hospital-nodes) (.get "title") (none?))))
(defn iter-hospital-nodes []
(chain.from-iterable (take-while (complement empty-hospital-nodes?)
(map (comp extract-hospital-nodes get-soup)
(count 1)))))
(defn get-address-node [node]
(.find node :itemprop "address"))
(defn get-all-itemprops [node]
(dfor prop-node (.find-all node :itemprop True)
[(keyword (.get prop-node "itemprop")) (.strip (. prop-node text))]))
(defn extract-hospital-data [node]
{:title (-> (.find node "a") (.get "title"))
#** (-> (get-address-node node) (get-all-itemprops))})
(defmain [&rest args]
(pprint (-> (map extract-hospital-data (iter-hospital-nodes)) (list))))
Code: Alles auswählen
[{:title "Sterignost"
:addressLocality "Klagenfurt"
:postalCode "9020"
:addressRegion "Kärnten"
:streetAddress "Linsengasse 46"}
{:streetAddress "Parkweg 1"
:postalCode "9201"
:addressLocality "Krumpendorf"
:addressRegion "Kärnten"
:title "Privatkrankenanstalt Parkvilla"}
; ... ca. 400 weitere Datensätze
{:title "Sonderkrankenanstalt Schrothkur Obervellach"
:streetAddress "Johann-Schroth-Weg 137"
:postalCode "9821"
:addressLocality "Obervellach"
:addressRegion "Kärnten"
:telephone "04782/2043"
:email "office@schrothkur.at"
:faxNumber "04782/2043-14"
:url "http://www.schrothkur.at"}
{:title "Landeskrankenhaus - Universitätsklinikum Graz"
:streetAddress "Auenbruggerplatz 8"
:postalCode "8036"
:addressLocality "Graz"
:addressRegion "Steiermark"}]
“Vir, intelligence has nothing to do with politics!” — Londo Mollari