Ricerca…


HTTP GET

Python 2.x 2.7

Python 2

import urllib
response = urllib.urlopen('http://stackoverflow.com/documentation/')

L'uso di urllib.urlopen() restituirà un oggetto risposta, che può essere gestito in modo simile a un file.

print response.code
# Prints: 200

response.code rappresenta il valore di ritorno http. 200 è OK, 404 è NotFound, ecc.

print response.read()
'<!DOCTYPE html>\r\n<html>\r\n<head>\r\n\r\n<title>Documentation - Stack. etc'

response.read() e response.readlines() possono essere utilizzati per leggere il file html effettivo restituito dalla richiesta. Questi metodi funzionano in modo simile a file.read*

Python 3.x 3.0

Python 3

import urllib.request

print(urllib.request.urlopen("http://stackoverflow.com/documentation/"))
# Prints: <http.client.HTTPResponse at 0x7f37a97e3b00>

response = urllib.request.urlopen("http://stackoverflow.com/documentation/")

print(response.code)
# Prints: 200
print(response.read())
# Prints: b'<!DOCTYPE html>\r\n<html>\r\n<head>\r\n\r\n<title>Documentation - Stack Overflow</title> 

Il modulo è stato aggiornato per Python 3.x, ma i casi d'uso rimangono sostanzialmente gli stessi. urllib.request.urlopen restituirà un oggetto simile a un file simile.

HTTP POST

Per i dati POST passare gli argomenti di query codificati come dati a urlopen ()

Python 2.x 2.7

Python 2

import urllib
query_parms = {'username':'stackoverflow', 'password':'me.me'}
encoded_parms = urllib.urlencode(query_parms)
response = urllib.urlopen("https://stackoverflow.com/users/login", encoded_parms)
response.code
# Output: 200
response.read()
# Output: '<!DOCTYPE html>\r\n<html>\r\n<head>\r\n\r\n<title>Log In - Stack Overflow'
Python 3.x 3.0

Python 3

import urllib
query_parms = {'username':'stackoverflow', 'password':'me.me'}
encoded_parms = urllib.parse.urlencode(query_parms).encode('utf-8')
response = urllib.request.urlopen("https://stackoverflow.com/users/login", encoded_parms)
response.code
# Output: 200
response.read()
# Output: b'<!DOCTYPE html>\r\n<html>....etc'

Decodifica i byte ricevuti in base alla codifica del tipo di contenuto

I byte ricevuti devono essere decodificati con la corretta codifica dei caratteri per essere interpretati come testo:

Python 3.x 3.0
import urllib.request

response = urllib.request.urlopen("http://stackoverflow.com/")
data = response.read()

encoding = response.info().get_content_charset()
html = data.decode(encoding)
Python 2.x 2.7
import urllib2
response = urllib2.urlopen("http://stackoverflow.com/")
data = response.read()

encoding = response.info().getencoding()
html = data.decode(encoding)


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow