Στη σημερινή πρώτη άσκηση θα γράψουμε προγράμματα-πελάτες (client) που χρησιμοποιούν το πρωτόκολλο HTTP για να επκοινωνήσουν με έναν εξυπηρετητή (server).
Η Python παρέχει διάφορες βιβλιοθήκες για το χειρισμό του πρωτοκόλλου HTTP, μία από τις οποίες είναι η ενσωματωμένη στη βασική διανομή urllib. Στη σημερινή άσκηση θα χρησιμοποιήσουμε τη βιβλιοθήκη requests της Python. Επίσης χρήσιμη θα είναι και η βασική γνώση regular expressions με βιβλιοθήκη re (δείτε και το Regular Expression HOWTO).
Για να εγκαταστήσετε τη requests στους υπολογιστές του ΚΥΠΕΣ, τρέξτε:
pip3 install --user requests
Ανοίξτε και μελετήστε την τεκμηρίωση της βιβλιοθήκης requests. Η requests είναι μια βιβλιοθήκη για την υποβολή ερωτημάτων με το πρωτόκολλο HTTP.
Η βασική λογική της βιβλιοθήκης φαίνεται στο παρακάτω αρχικό παράδειγμα: (αρχείο ex0.py) που μας επιστρέφει τον κώδικα html της σελίδας http://python.org/:
import requests # εισαγωγή της βιβλιοθήκης
def more(text):
count = 0
for line in text.split('\n'):
print(line)
count += 1
if count % 30 == 0:
reply = input('Show more (y/n)? ')
if reply == 'n':
break
url = 'http://python.org/' # προσδιορισμός του url
with requests.get(url) as response: # το αντικείμενο response
html = response.text
more(html)
Για να δούμε τις κεφαλίδες της σελίδας που λάβαμε, αρκεί να κοιτάξουμε στο λεξικό headers στο αντικείμενο response.
Σε αρχείο python με όνομα lab1-1.py γράψτε κώδικα που:
-
Ζητάει από τον χρήστη ένα URL,
-
Πραγματοποιεί ένα αίτημα HTTP σε αυτό το URL,
-
Τυπώνει τις κεφαλίδες (headers) της απόκρισης HTTP.
-
Τροποποιήστε τον κώδικα ώστε να απαντάει για το URL που έδωσε ο χρήστης με τις εξής πληροφορίες:
- Ποιο είναι το λογισμικό που χρησιμοποιεί ο εξυπηρετητής (ο web server) για να απαντήσει στο αίτημα;
- Αν η σελίδα χρησιμοποιεί cookies, και αν ναι
- Το όνομα κάθε cookie και για πόσο διάστημα θα είναι έγκυρο.
Για να δείτε ποιες είναι οι κεφαλίδες που δίνουν τις πληροφορίες που σας χρειάζονται στην τεκμηρίωση στο MDN Web Docs.