Le Web est un système client-serveur. Client-> serveur ** demande **. Du serveur au client, ouvrez une connexion TCP / IP, envoyez l'URL et d'autres informations via HTTP et recevez ** la réponse **.
La réponse a un statut, des données de réponse et un format.
Le client Web le plus connu est le navigateur Web. Vous pouvez envoyer des requêtes HTTP de différentes manières.
Chaque connexion HTTP est indépendante et indépendante des autres connexions. (Stateless) → Les cookies sont utilisés pour gérer l'état au lieu de HTTP.
Le serveur place des informations spécifiques au client dans un cookie et les envoie au client. → Lorsque le client renvoie le cookie au serveur, le serveur identifie de manière unique le client à partir du cookie.
Les clients Web et les modules serveur n'étaient pas très bien organisés dans Python 2. → En Python3, il est résumé dans un package.
--http gère les détails du serveur client HTTP. --client effectue le traitement côté client. --server aide au développement de serveurs Web avec Python.
--urllib fonctionne sur http. --request traite la demande du client. --response traite la réponse du serveur. --parse sépare l'URL en plusieurs parties.
>>> 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'
#Afficher le code d'état HTTP.
#Un 200 indique que tout le code a fonctionné.
>>> print(conn.status)
200
#Affichage du format des données
#Contenu de l'en-tête de réponse HTTP-Spécifié par type.
>>> 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
#D'autres valeurs peuvent être spécifiées pour le numéro de port.
python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
#127.0.0.1 :Adresse du client
#Premier- :Nom d'utilisateur distant
#Seconde- :Nom d'utilisateur connexion
#"GET / HTTP/1.1":Commandes envoyées au serveur Web
#GET est une méthode HTTP,/Est la ressource demandée (répertoire racine), HTTP/1.1 est la version HTTP.
#200:Code d'état HTTP
127.0.0.1 - - [27/Jan/2020 20:09:04] "GET / HTTP/1.1" 200 -
9.2.2 WSGI Un bond en avant depuis la définition de WSGI, une API universelle entre les applications Web Pytho et les serveurs Web.
Le framework Web fournit certaines ou toutes les fonctionnalités suivantes:
--Routage
9.2.4 Bottle
--Bottle est entièrement constitué de fichiers Python, il est donc très facile d'essayer et de déployer.
installation de bouteille
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
#Pour associer l'URL à la fonction qui la suit immédiatement@Utilisez le décorateur d'itinéraire.
#dans ce cas,/(page d'accueil)Est traité par la fonction d'accueil.
@route("/")
def home():
return "It is not fancy, but it is my home page"
#run()La fonction exécute un serveur Web de test Python intégré à Bottle.
run(host="localhost",port=9999)
Déclaration d'exécution
python3 bottle1.py
Bottle v0.12.18 server starting up (using WSGIRefServer())...
Listening on http://localhost:9999/
Hit Ctrl-C to quit.
Résultat d'exécution
#http://localhost:Accédez à 9999.
It is not fancy, but it is my home page
bottle2.py
#Faire en sorte que la bouteille renvoie le contenu de ce fichier lorsque la page d'accueil est demandée.
from bottle import route, run, static_file
@route("/")
#La racine indique"."Est le répertoire actuel.
def home():
return static_file("index.html",root=".")
run(host="localhost",port=9999)
Déclaration d'exécution
python bottle2.py
Bottle v0.12.18 server starting up (using WSGIRefServer())...
Listening on http://localhost:9999/
Hit Ctrl-C to quit.
Résultat d'exécution
#http://localhost:9999/Accès à.
My new and improved home page!!!
bottle3.py
from bottle import route, run, static_file
@route("/")
def home():
return static_file("index.html",root=".")
#Passez des arguments à la fonction via une URL.
#echo()Chose d'argument dans l'URL/echo/Remplacez l'argument chaîne après.
@route("/echo/<thing>")
def echo(thing):
return "Say hello to my little friend: %s" % thing
# debug=True
# reloader=True
run(host="localhost",port=9999)
Déclaration d'exécution
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
Résultat d'exécution
#http://localhost:9999/echo/Accédez à Mothra.
Say hello to my little friend: Mothra
--Si debug = True est spécifié, une page de débogage sera créée lorsqu'une erreur HTTP est renvoyée. --Si reloader = True, la page se recharge dans le navigateur lorsque vous modifiez votre code Python.
9.2.5 Flask
Installation du flacon
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)
Résultat d'exécution
#http://127.0.0.1:9999/Accès à.
My new and improved home page!!!
#http://127.0.0.1:9999/echo/Entrez Godzilla dans votre navigateur.
Godzilla
--Flazk a un modèle appelé 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=chose lue depuis l'URL<thing>Est assigné à une variable appelée chose, et c'est"flask2.html"Transmis à.
@app.route("/echo/<thing>")
def echo(thing):
return render_template("flask2.html",thing=thing)
app.run(port=9999,debug=True)
Résultat d'exécution
#http://127.0.0.1:9999/echo/Entrez Gamera dans le navigateur
< 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)
Résultat d'exécution
#http://127.0.0.1:9999/echo/Rodan/Visitez 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__)
#Passez comme un argument GET.
@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)
Résultat d'exécution
#http://127.0.0.1:9999/echo/?thing=Gorgo&place=Visitez 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/")
#Du dictionnaire**Utilisez pour convertir la clé en dictionnaire et falask3.Peut être passé en html.
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)
Il y a beaucoup de.
Le Web est utilisé comme un moyen puissant de connecter des applications et des données dans une variété de formats autres que HTML.
9.3.2 JSON
Pour une étude quelque temps. "Tutoriel Scrapy" https://doc-ja-scrapy.readthedocs.io/ja/latest/intro/tutorial.html
--Beautiful Soup est utile si vous avez déjà récupéré le code HTML et les données de votre site Web.
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>
Passez trois arguments GET, chose, hauteur et couleur, à la fonction 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)
J'ai rapidement revu le système Web. Même si j'utilise ce domaine, il me semble que c'est loin.
"Introduction à Python3 par Bill Lubanovic (publié par O'Reilly Japon)"
Recommended Posts