Si të merrni të dhëna nga një faqe në internet duke përdorur metodat GET dhe POST në një skript Python në Windows


Programet dhe skriptet Python mund të bëjnë kërkesa dhe të marrin të dhëna nga faqet e internetit dhe shërbimet e internetit duke përdorur metodat GET dhe POST (si dhe metoda të tjera HTTP: PUT, PATCH dhe DELETE).

Por, çka nëse dëshironi të kaloni të dhëna nga një faqe ueb në një skript Python?

Kjo mund të bëhet në disa mënyra.

Si të merrni të dhëna nga një faqe në internet duke përdorur metodat GET dhe POST në një skript Python nëse Python është konfiguruar si një modul CGI i serverit të uebit Apache

Shih gjithashtu: Si të instaloni Python dhe PIP në Windows 10. Si të konfiguroni Python si një modul serveri ueb

Në direktorinë e serverit të uebit, krijoni një nënfolder test-python.

Në të, ne do të krijojmë një skedar HTML me emrin test-form.htm dhe përmbajtjen e mëposhtme:


<!DOCTYPE html>
    <head>
        <title>ZaLinux.ru: An example of running Python on a web server</title>
    </head>
    <body>

        <form action="program.py" method="post">
            <label for="name">Name:</label>
            <input type="text" id="name" name="name"><br><br>

            <label for="email">Surname:</label>
            <input type="text" id="surname" name="surname"><br><br>

            <label for="message">Information:</label><br>
            <textarea id="info" name="info" rows="4" cols="30"></textarea><br><br>

            <input type="submit" value="Submit">
        </form>

    </body>
</html>

Në të njëjtin nën-dosje, krijoni një skedar program.py me përmbajtjen e mëposhtme:


#!C:\python\python.exe

# Import modules for CGI processing
import cgi, cgitb

# Create a FieldStorage instance
form = cgi.FieldStorage()

# Getting data from form fields
name = form.getvalue('name')
surname = form.getvalue('surname')
info = form.getvalue('info')

# HTTP header output
print ('Content-type: text/html\r\n\r\n')

# Output HTML code with received data
print ('<html>')
print ('<head>')
print ('<title>ZaLinux.ru: An example of running Python on a web server</title>')
print ('</head>')
print ('<body>')

print ('<em>Python script reports: </em>', '<br /><br />')
print ('<b>Name: </b>', name, '<br />')
print ('<b>Surname: </b>', surname, '<br />')
print ('<b>Extra information: </b>', info, '<br />')

print ('</body>')
print ('</html>')

Shpjegimet janë dhënë në komentet e kodit. Për të marrë të dhëna nga një formular, përdoret form.getvalue().

Vini re rreshtin e parë me #!C:\python\python.exe shebang – rruga drejt skedarit python.exe mund të jetë e ndryshme në rastin tuaj, kështu që modifikoni linjën për t'iu përshtatur instalimit tuaj të Python.

Hapni adresën http://localhost/test-python/test-form.htm dhe plotësoni të dhënat e formularit:

Le t'i dërgojmë të dhënat në server. Siç mund ta shihni, skripti Python mori me sukses të dhënat e formularit të dërguar me metodën POST në serverin e uebit.

Një kod i ngjashëm përdoret për të marrë të dhëna të dërguara me metodën GET – thjesht ndryshoni metodën në rreshtin

:


<!DOCTYPE html>
    <head>
        <title>ZaLinux.ru: An example of running Python on a web server</title>
    </head>
    <body>

        <form action="program.py" method="get">
            <label for="name">Name:</label>
            <input type="text" id="name" name="name"><br><br>

            <label for="email">Surname:</label>
            <input type="text" id="surname" name="surname"><br><br>

            <label for="message">Information:</label><br>
            <textarea id="info" name="info" rows="4" cols="30"></textarea><br><br>

            <input type="submit" value="Submit">
        </form>

    </body>
</html>

Keni parasysh se skriptet Python për përdorim me modulin CGI të serverit të uebit duhet të përmirësohen: skripti duhet të dërgojë një kokë HTTP përpara se të shfaqë të dhënat. Nëse nuk e ndryshoni skriptin Python, atëherë programi do të dështojë.