Zoeken…


HTTP GET

Python 2.x 2.7

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.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> 

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.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'

Decodeer ontvangen bytes volgens inhoudstype codering

De ontvangen bytes moeten worden gedecodeerd met de juiste tekencodering om als tekst te kunnen worden geïnterpreteerd:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow