Das Web ist ein Client-Server-System. Client-> Server ** Anfrage **. Öffnen Sie vom Server zum Client eine TCP / IP-Verbindung, senden Sie URLs und andere Informationen über HTTP und erhalten Sie eine ** Antwort **.
Die Antwort hat Status, Antwortdaten und Format.
Der bekannteste Webclient ist der Webbrowser. Sie können HTTP-Anforderungen auf verschiedene Arten senden.
Jede HTTP-Verbindung ist unabhängig und unabhängig von anderen Verbindungen. (Statuslos) → Cookies werden verwendet, um den Status anstelle von HTTP zu verwalten.
Der Server fügt clientspezifische Informationen in ein Cookie ein und sendet sie an den Client. → Wenn der Client das Cookie an den Server zurücksendet, identifiziert der Server den Client anhand des Cookies eindeutig.
Webclients und Servermodule waren in Python 2 nicht sehr gut organisiert. → In Python3 ist es in einem Paket zusammengefasst.
--http verwaltet die Details des Client-Server-HTTP. --client führt die clientseitige Verarbeitung durch. --server unterstützt die Webserverentwicklung mit Python. --cookies und Cookie-Gläser verwalten Cookies, in denen die erforderlichen Informationen über mehrere Besuche vor Ort hinweg gespeichert werden.
--urllib läuft auf http. --request verarbeitet die Anfrage des Kunden. --response verarbeitet die Serverantwort. --parse trennt die URL in Teile.
>>> import urllib.request as ur
>>> url="https://raw.githubusercontent.com/koki0702/introducing-python/master/dummy_api/fortune_cookie_random1.txt"
>>> conn=ur.urlopen(url)
>>> print(conn)
<http.client.HTTPResponse object at 0x10733c8d0>
>>> data=conn.read()
>>> print(data)
b'You will be surprised by a loud noise.\\r\\n\\n[codehappy] http://iheartquotes.com/fortune/show/20447\n'
#HTTP-Statuscode anzeigen.
#Eine 200 zeigt an, dass der gesamte Code funktioniert hat.
>>> print(conn.status)
200
#Datenformatanzeige
#Inhalt des HTTP-Antwortheaders-Angegeben nach Typ.
>>> print(conn.getheader("Content-Type"))
text/plain; charset=utf-8
>>> for key,value in conn.getheaders():
... print(key,value)
...
Content-Type text/plain; charset=utf-8
Content-Security-Policy default-src 'none'; style-src 'unsafe-inline'; sandbox
Strict-Transport-Security max-age=31536000
X-Content-Type-Options nosniff
X-Frame-Options deny
X-XSS-Protection 1; mode=block
ETag W/"9f5651c47de1d25d4c531d22c98b96ea61d10d7e4f5c6eb6cbeecd9e01cdfbf8"
Cache-Control max-age=300
X-Geo-Block-List
Via 1.1 varnish-v4
X-GitHub-Request-Id D326:4317:329188:36E387:5E2EBEE7
Content-Length 99
Accept-Ranges bytes
Date Mon, 27 Jan 2020 10:43:52 GMT
Via 1.1 varnish
Connection close
X-Served-By cache-tyo19932-TYO
X-Cache MISS
X-Cache-Hits 0
X-Timer S1580121832.776951,VS0,VE269
Vary Authorization,Accept-Encoding, Accept-Encoding
Access-Control-Allow-Origin *
X-Fastly-Request-ID 034e4e0799a3de2ed0ae382d63bcd716a0574002
Expires Mon, 27 Jan 2020 10:48:52 GMT
Source-Age 0
>>>
>>> import requests
>>> url="https://raw.githubusercontent.com/koki0702/introducing-python/master/dummy_api/fortune_cookie_random1.txt"
>>> resp=requests.get(url)
>>> resp
<Response [200]>
>>> print(resp.text)
I know that there are people who do not love their fellow man, and I people like that!
-- Tom Lehrer, Satirist and Professor
[codehappy] http://iheartquotes.com/fortune/show/21465
$ python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
127.0.0.1 - - [27/Jan/2020 20:09:04] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [27/Jan/2020 20:09:04] code 404, message File not found
127.0.0.1 - - [27/Jan/2020 20:09:04] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [27/Jan/2020 20:12:55] "GET /wheel HTTP/1.1" 200 -
q
C
^C
python -m http.server 9999
Serving HTTP on 0.0.0.0 port 9999 (http://0.0.0.0:9999/) ...
^C
python
#Für die Portnummer können andere Werte angegeben werden.
python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
#127.0.0.1 :Kundenadresse
#Zuerst- :Remote-Benutzername
#Zweite- :Login Benutzername
#"GET / HTTP/1.1":An den Webserver gesendete Befehle
#GET ist eine HTTP-Methode./Ist die angeforderte Ressource (Stammverzeichnis) HTTP/1.1 ist die HTTP-Version.
#200:HTTP-Statuscode
127.0.0.1 - - [27/Jan/2020 20:09:04] "GET / HTTP/1.1" 200 -
9.2.2 WSGI Ein Durchbruch seit der Definition von WSGI, einer universellen API zwischen Pytho-Webanwendungen und Webservern.
Das Webframework bietet einige oder alle der folgenden Funktionen:
--Routing
9.2.4 Bottle
--Bottle wird nur mit Python-Dateien erstellt, daher ist es sehr einfach, die Bereitstellung zu versuchen.
Flascheninstallation
pip install bottle
Collecting bottle
Downloading bottle-0.12.18-py3-none-any.whl (89 kB)
|████████████████████████████████| 89 kB 692 kB/s
Installing collected packages: bottle
Successfully installed bottle-0.12.18
bottle1.py
from bottle import route, run
#So ordnen Sie die URL der unmittelbar darauf folgenden Funktion zu@Verwenden Sie den Routendekorateur.
#in diesem Fall,/(Startseite)Wird von der Home-Funktion verarbeitet.
@route("/")
def home():
return "It is not fancy, but it is my home page"
#run()Die Funktion führt einen in die Flasche integrierten Python-Testwebserver aus.
run(host="localhost",port=9999)
Ausführungsanweisung
python3 bottle1.py
Bottle v0.12.18 server starting up (using WSGIRefServer())...
Listening on http://localhost:9999/
Hit Ctrl-C to quit.
Ausführungsergebnis
#http://localhost:Zugriff auf 9999.
It is not fancy, but it is my home page
bottle2.py
#Lassen Sie die Flasche den Inhalt dieser Datei zurückgeben, wenn die Homepage angefordert wird.
from bottle import route, run, static_file
@route("/")
#Wurzel zeigt an"."Ist das aktuelle Verzeichnis.
def home():
return static_file("index.html",root=".")
run(host="localhost",port=9999)
Ausführungsanweisung
python bottle2.py
Bottle v0.12.18 server starting up (using WSGIRefServer())...
Listening on http://localhost:9999/
Hit Ctrl-C to quit.
Ausführungsergebnis
#http://localhost:9999/Zugriff auf.
My new and improved home page!!!
bottle3.py
from bottle import route, run, static_file
@route("/")
def home():
return static_file("index.html",root=".")
#Übergeben Sie Argumente per URL an die Funktion.
#echo()Argument Sache in der URL/echo/Ersetzen Sie das String-Argument nach.
@route("/echo/<thing>")
def echo(thing):
return "Say hello to my little friend: %s" % thing
# debug=True
# reloader=True
run(host="localhost",port=9999)
Ausführungsanweisung
python bottle3.py
Bottle v0.12.18 server starting up (using WSGIRefServer())...
Listening on http://localhost:9999/
Hit Ctrl-C to quit.
127.0.0.1 - - [27/Jan/2020 20:59:21] "GET /echo/Mothra HTTP/1.1" 200 37
Ausführungsergebnis
#http://localhost:9999/echo/Greifen Sie auf Mothra zu.
Say hello to my little friend: Mothra
--Wenn debug = True angegeben ist, wird eine Debug-Seite erstellt, wenn ein HTTP-Fehler zurückgegeben wird. --Wenn reloader = True ist, wird die Seite im Browser neu geladen, wenn Sie Änderungen an Ihrem Python-Code vornehmen.
9.2.5 Flask
Kolbeninstallation
pip install flask
...
Successfully installed Jinja2-2.10.3 MarkupSafe-1.1.1 Werkzeug-0.16.1 click-7.0 flask-1.1.1 itsdangerous-1.1.0
flask1.py
from flask import Flask
app=Flask(__name__, static_folder=".",static_url_path="")
@app.route("/")
def home():
return app.send_static_file("index.html")
@app.route("/echo/<thing>")
def echo(thing):
return thing
# reloader=True
app.run(port=9999, debug=True)
Ausführungsergebnis
#http://127.0.0.1:9999/Zugriff auf.
My new and improved home page!!!
#http://127.0.0.1:9999/echo/Geben Sie Godzilla in Ihren Browser ein.
Godzilla
--Flazk hat eine Vorlage namens jinja2.
flask2.html
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Flask2 Example</title>
</head>
<body>
Say hello to my little friend:{{ thing }}
</body>
</html>>
flask2.py
from flask import Flask, render_template
app=Flask(__name__)
#thing=<thing>"flask2.html"
@app.route("/echo/<thing>")
def echo(thing):
return render_template("flask2.html",thing=thing)
app.run(port=9999,debug=True)
#http://127.0.0.1:9999/echo/
< Say hello to my little friend:Gamera >
flask3.html
<html>
<head>
<title>Flask3 Example</title>
</head>
<body>
Say hello to my little friend: {{ thing }}.
Alas, in just destroyed {{ place }}!
</body>
</html>
flask3a.py
from flask import Flask, render_template
app=Flask(__name__)
@app.route("/echo/<thing>/<place>")
def echo(thing, place):
return render_template("flask3.html",thing=thing, place=place)
app.run(port=9999, debug=True)
Wird einer Variablen namens thing zugewiesen und an übergeben. Ausführungsergebnis Geben Sie Gamera in den Browser ein. 9.2.5.1 Argumentübergabe in Form eines Teils des URL-Pfads Ausführungsergebnis
#http://127.0.0.1:9999/echo/Rodan/Besuchen Sie McKeesport.
Say hello to my little friend: Rodan. Alas, in just destroyed McKeesport!
flask3b.py
from flask import Flask, render_template, request
app=Flask(__name__)
#Als GET-Argument übergeben.
@app.route("/echo/")
def echo():
thing=request.args.get("thing")
place=request.args.get("place")
return render_template("flask3.html",thing=thing, place=place)
app.run(port=9999, debug=True)
Ausführungsergebnis
#http://127.0.0.1:9999/echo/?thing=Gorgo&place=Besuchen Sie Wilmerding.
Say hello to my little friend: Gorgo. Alas, in just destroyed Wilmerding!
flask3c.py
from flask import Flask, render_template, request
app=Flask(__name__)
@app.route("/echo/")
#Vom Wörterbuch**Verwenden Sie diese Option, um den Schlüssel in ein Wörterbuch und falask3 umzuwandeln.Kann an HTML übergeben werden.
def echo():
kwargs={}
kwargs["thing"]=request.args.get("thing")
kwargs["place"]=request.args.get("place")
return render_template("flask3.html",**kwargs)
app.run(port=9999, debug=True)
Es gibt viele.
Das Web wird als leistungsstarke Methode zum Verbinden von Anwendungen und Daten in einer Vielzahl anderer Formate als HTML verwendet.
9.3.2 JSON
Für irgendwann studieren. "Scrapy Tutorial" https://doc-ja-scrapy.readthedocs.io/ja/latest/intro/tutorial.html
flask9-1.py
from flask import Flask
app=Flask(__name__)
app.run(port=5000, debug=True)
flask9-2.py
from flask import Flask
app=Flask(__name__)
@app.route("/")
def home():
return "It is alive"
app.run(port=5000, debug=True)
home.html
<html>
<head>
<title>It is alive!</title>
<body>
I am of course referring to {{thing}},which is {{height}} feet tall and {{color}}.
</body>
</html>
Übergeben Sie drei GET-Argumente, Ding, Höhe und Farbe, an die Funktion home ().
flask9-4.py
from flask import Flask, render_template, request
app=Flask(__name__)
@app.route("/")
def home():
thing=request.args.get("thing")
height=request.args.get("height")
color=request.args.get("color")
return render_template("home.html",thing=thing, height=height, color=color)
app.run(port=5000, debug=True)
Ich habe das Web-System schnell überprüft. Selbst wenn ich diesen Bereich benutze, scheint er noch weit entfernt zu sein.
"Einführung in Python3 von Bill Lubanovic (veröffentlicht von O'Reilly Japan)"
Recommended Posts