您的位置:

深入理解requests中文文档

一、发送HTTP请求

使用requests库,发送HTTP请求更加简单方便。你仅需向requests.get() 方法传入URL参数即可得到返回的response对象。


import requests
response = requests.get('https://www.baidu.com/')
print(response.text)

代码中的requests.get()方法用于发送HTTP GET请求,返回response对象,该对象包含了服务器响应的内容信息和状态码等。运行上述代码,响应结果将会是百度首页的HTML文档。

当然,requests库也提供了其他几种发送HTTP请求的方法,比如requests.post(), requests.put(), requests.delete()等,你可以根据不同的业务需求选择不同的发送方式。

二、传递URL参数

有时我们需要在请求URL中传递一些参数信息,比如说进行搜索。requests提供params参数来传递这些信息。


import requests
payload = {'q': 'python'}
response = requests.get('https://www.baidu.com/s', params=payload)
print(response.url)

在上面的代码中,我们使用了params参数,传递了一个名叫“q”的参数。它会在URL中加上“?q=python”这部分参数,即搜索关键词为“python”。

该代码运行结果将会是:https://www.baidu.com/s?q=python

三、定制请求头

有些网站可能会根据请求头信息,返回不同的响应内容,所以我们需要在请求头中添加一些自定义的信息。requests提供了headers参数来传递这些信息。


import requests
headers = {'user-agent': 'Mozilla/5.0'}
response = requests.get('https://www.baidu.com/', headers=headers)
print(response.text)

在上面的代码中,我们使用了headers参数,传递了User-Agent信息。这个信息通常用来告诉服务器客户端的类型,版本以及操作系统等信息。该代码运行结果将会是百度首页的HTML文档。

四、响应内容

requests返回的response对象中包含了很多有用的响应信息, 可以使用text属性获得响应的内容。如果响应内容是二进制类型,可以使用content属性。


import requests
response = requests.get('https://www.baidu.com/img/bd_logo1.png')
print(response.content)

在上面的代码中,我们使用了content属性获取百度首页Logo的二进制数据,并且可以使用二进制写入模式将它们写入到本地的文件中。

五、Cookies

网络爬虫通常需要保存登录会话信息, requests提供了cookies参数来管理请求中的cookies。


import requests
cookies = dict(username='kate', password='123456')
response1 = requests.post('http://example.com/login', data=cookies)
response2 = requests.get('http://example.com/myaccount', cookies=response1.cookies)

在上面的代码中,我们使用了cookies参数,传递用户名和密码信息,发送POST请求,返回的response对象中的cookies信息包含了登录会话信息。可以基于这些cookie信息,发送GET请求来访问私人账户页面。

六、会话对象

为了保持持续的会话状态,requests提供了Session对象,它让我们可以在多个请求之间共享cookies信息。


import requests
session = requests.Session()
session.get('http://example.com/login', params={'username':'kate', 'password':'123456'})
session.get('http://example.com/myaccount')

在上面的代码中,我们使用Session对象,创建了一个会话。发送GET请求时,将用户名和密码信息添加到URL中作为参数。Session对象会自动管理cookies信息,这样就可以在第二个GET请求中访问私人账户页面。

七、上传文件

使用requests提交表单数据和上传文件也很简单。


import requests
files = {'avatar': open('avatar.jpg', 'rb')}
response = requests.post('http://example.com/profile', files=files)

在上面的代码中,我们使用调用open()函数来打开文件。然后使用files参数传递二进制文件数据到POST请求中。

八、SSL验证

当请求HTTPS地址时,requests默认会检查服务器证书是否有效。你可以使用verify参数来有选择地关闭SSL验证。


import requests
response = requests.get('https://github.com', verify=False)
print(response.text)

在上面的代码中,我们使用verify参数,禁止了SSL验证。如果服务器证书是无效的,requests会抛出一个SecurityWarning异常。