Python Language
urllib
Zoeken…
HTTP GET
Python 2
import urllib
response = urllib.urlopen('http://stackoverflow.com/documentation/')
Met urllib.urlopen()
wordt een responsobject geretourneerd dat vergelijkbaar met een bestand kan worden behandeld.
print response.code
# Prints: 200
De response.code
vertegenwoordigt de http-retourwaarde. 200 is OK, 404 is NotFound, etc.
print response.read()
'<!DOCTYPE html>\r\n<html>\r\n<head>\r\n\r\n<title>Documentation - Stack. etc'
response.read()
en response.readlines()
kunnen worden gebruikt om het werkelijke HTML-bestand te lezen dat is geretourneerd door de aanvraag. Deze methoden werken op dezelfde manier als file.read*
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>
De module is bijgewerkt voor Python 3.x, maar use cases blijven in principe hetzelfde. urllib.request.urlopen
retourneert een soortgelijk bestandachtig object.
HTTP POST
Om gegevens te POST geven de gecodeerde queryargumenten als gegevens door aan urlopen ()
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
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'
Decodeer ontvangen bytes volgens inhoudstype codering
De ontvangen bytes moeten worden gedecodeerd met de juiste tekencodering om als tekst te kunnen worden geïnterpreteerd:
import urllib.request
response = urllib.request.urlopen("http://stackoverflow.com/")
data = response.read()
encoding = response.info().get_content_charset()
html = data.decode(encoding)
import urllib2
response = urllib2.urlopen("http://stackoverflow.com/")
data = response.read()
encoding = response.info().getencoding()
html = data.decode(encoding)