In Python, the urllib
standard library package provides a convenient way to create network requests. Let’s explore how to use it effectively.
To start, let’s create a basic network request:
from urllib import request
url = 'https://dog.ceo/api/breeds/list/all'
response = request.urlopen(url)
content = response.read()
print(content)
In the above code snippet, we import the request
module from the urllib
package and specify the URL we want to request. We then use the urlopen()
method to send the request and retrieve the response. The read()
method is then used to retrieve the content of the response.
To simplify the code and ensure proper resource cleanup, we can use the with
statement:
from urllib import request
url = 'https://dog.ceo/api/breeds/list/all'
with request.urlopen(url) as response:
content = response.read()
print(content)
The response received is a sequence of bytes, which is why it is wrapped in a b''
string. If you want to convert it to a UTF-8 encoded string, you can use the decode()
method:
from urllib import request
url = 'https://flaviocopes.com'
with request.urlopen(url) as response:
content = response.read().decode('utf-8')
print(content)
Additionally, if the response is in JSON format, you can use the json
module to parse it:
from urllib import request
import json
url = 'https://dog.ceo/api/breeds/list/all'
with request.urlopen(url) as response:
content = response.read()
data = json.loads(content)
print(data['status'])
If you need to include query parameters in your request, you can use the urllib.parse()
method to build the query string:
from urllib import request, parse
url = 'https://api.thecatapi.com/v1/images/search'
params = {
'limit': 5,
'page': 1,
'order': 'Desc'
}
querystring = parse.urlencode(params)
with request.urlopen(url + '?' + querystring) as response:
content = response.read().decode('utf-8')
print(content)
While the urllib
package is built-in and provides basic network capabilities, you may also consider using the popular requests
package for more convenient request handling.
Tags: Python, network requests, urllib, web development, requests