In this chapter, we are going to deal with advanced topics in the Requests module. There are many more features in the Requests module that makes the interaction with the web a cakewalk. Let us get to know more about different ways to use Requests module which helps us to understand the ease of using it.
In a nutshell, we will cover the following topics:
The Requests module contains a session
object, which has the capability to persist settings across the requests. Using this session
object, we can persist cookies, we can create prepared requests, we can use the keep-alive feature and do many more things. The Session object contains all the methods of Requests API such as GET
, POST
, PUT
, DELETE
and so on. Before using all the capabilities of the Session object, let us get to know how to use sessions and persist cookies across requests.
Let us use the session method to get the resource.
>>> import requests >>> session = requests.Session() >>> response = requests.get("https://google.co.in", cookies={"new-cookie-identifier": "1234abcd"})
In the preceding example, we created a session
object with requests
and its get
method is used to access a web resource.
The cookie
value which we had set in the previous example will be accessible using response.request.headers
.
>>> response.request.headers CaseInsensitiveDict({'Cookie': 'new-cookie-identifier=1234abcd', 'Accept-Encoding': 'gzip, deflate, compress', 'Accept': '*/*', 'User-Agent': 'python-requests/2.2.1 CPython/2.7.5+ Linux/3.13.0-43-generic'}) >>> response.request.headers['Cookie'] 'new-cookie-identifier=1234abcd'
With session
object, we can specify some default values of the properties, which needs to be sent to the server using GET, POST, PUT and so on. We can achieve this by specifying the values to the properties like headers
, auth
and so on, on a Session
object.
>>> session.params = {"key1": "value", "key2": "value2"} >>> session.auth = ('username', 'password') >>> session.headers.update({'foo': 'bar'})
In the preceding example, we have set some default values to the properties—params
, auth
, and headers
using the session
object. We can override them in the subsequent request, as shown in the following example, if we want to:
>>> session.get('http://mysite.com/new/url', headers={'foo': 'new-bar'})
3.142.199.181