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)