Web-Zugriffe mit requests¶
# Nutzung des Moduls requests
# http://docs.python-requests.org/en/master/
import requests
r = requests.get('https://www.tu-chemnitz.de')
print(r.status_code)
print(r.headers['content-type'])
print(r.encoding)
print(r.text[:100])
kleiner Test-Web-Server mit flask
# kleiner Test-Webserver mit Flask
#
# Start:
#
# python web_server_flask.py
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods = ['GET', 'POST'])
def get_name():
# http://flask.pocoo.org/docs/0.12/quickstart/#accessing-request-data
# http://flask.pocoo.org/docs/0.12/api/#incoming-request-data
if 0:
# mit Unterscheidung zwischen GET und POST/PUT:
# GET ==> request.args.get
# POST/PUT ==> request.form (Formulardaten)
params = request.args if request.method == 'GET' else request.form
else:
# ohne Unterscheidung zwischen GET und POST/PUT: request.values
params = request.values
# hier nutzen wir beim Zugriff auf das Parameter-Dictionary den
# Default-Wert "???"
return params.get('name', '???')
app.run(debug = True)
Nutzungsbeispiele für requests
# http://zetcode.com/web/pythonrequests/
import requests as req
from pprint import pprint
# query parameters
payload = {'name': 'Peter', 'age': 23}
resp = req.get('http://httpbin.org/get', params = payload)
print('---')
print(resp.url)
print('---')
print(resp.text)
print('===')
# redirection
resp = req.get('http://www.tu-chemnitz.de')
print(resp.status_code)
print(resp.history)
print(resp.url)
print('===')
# POST statt GET
d = {'name': 'Peter'}
resp = req.post('http://127.0.0.1:5000/', d)
print(resp.text)
print('===')
# JSON
resp = req.get('https://www-apps.hrz.tu-chemnitz.de/tucrooms/api/v1/room/?search=B404')
pprint(resp.json())
print('===')
# Streaming
url = 'https://docs.oracle.com/javase/specs/jls/se8/jls8.pdf'
local_filename = url.split('/')[-1]
r = req.get(url, stream = True)
with open(local_filename, 'wb') as f:
c = 1
for chunk in r.iter_content(chunk_size = 1024):
f.write(chunk)
c += 1
print('%d chunks written' % c)