Requests库的get()方法

1. Requests库介绍

Requests是一个Python第三方库,它是用来发送HTTP请求的。使用Python自带的urllib库虽然也可以发送HTTP请求,但是使用起来比较麻烦,而且有些功能比较难以实现。相比之下,Requests库更加简单易用,代码易懂。在Requests中,可以设置头部信息,发送POST、GET等请求方式,操作cookies等等。

2. Requests中的get()方法

在Requests库中,发送GET请求需要使用get()方法。下面是get()方法的基本用法:

import requests

response = requests.get(url, params=None, **kwargs)

其中,url是访问链接,params是链接中需要传递的参数,kwargs是可选参数,比如headers、cookies、proxies等。

下面将逐一介绍get()方法中的各个参数:

2.1 url参数

url参数代表要访问的链接。在实际使用中,我们可以使用url参数拼出所要访问的链接。比如:

import requests

city = 'Beijing'

url = 'https://www.baidu.com/s?wd=' + city

response = requests.get(url)

上述代码中,我们通过url参数拼接出了一个百度搜索北京的链接,并使用get()方法访问了该链接。

2.2 params参数

params参数代表要在链接中传递的参数。在实际使用中,我们可以将params参数传递给get()方法,get()方法会将params参数自动添加到url中。比如:

import requests

params = {'key1': 'value1', 'key2': 'value2'}

url = 'https://httpbin.org/get'

response = requests.get(url, params=params)

上述代码中,我们定义了一个params字典,然后将params字典作为get()方法的params参数传递进去。get()方法会自动将params字典中的键值对拼接成一个查询字符串,并添加到url中。如果运行上述代码,会返回一个JSON对象,其中包含了params参数传递进去后的查询字符串:

{

"args": {

"key1": "value1",

"key2": "value2"

},

"headers": {

"Host": "httpbin.org",

"User-Agent": "python-requests/2.26.0",

"Accept-Encoding": "gzip, deflate, br",

"Accept": "*/*",

"Connection": "keep-alive"

},

"url": "https://httpbin.org/get?key1=value1&key2=value2"

}

可以看到,在返回的JSON对象中,args字段中包含了我们传递的params参数。

2.3 可选参数

2.3.1 headers参数

headers参数代表请求头部信息。在实际使用中,有些网站需要在请求头中传递一些特定的信息,才能正常访问。比如:

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

url = 'https://www.baidu.com'

response = requests.get(url, headers=headers)

上述代码中,我们定义了一个headers字典,并将headers字典作为get()方法的headers参数传递进去。get()方法会在发送请求时,自动将headers字典中的信息添加到请求头中。在实际使用中,我们可以根据不同的网站,自行定义对应的headers字典。

2.3.2 cookies参数

cookies参数代表发送请求时带上的cookies信息。如果需要在发送请求时携带会话信息,比如登录状态等,可以将cookies信息传递给get()方法。比如:

import requests

cookies = {'key1': 'value1', 'key2': 'value2'}

url = 'https://www.baidu.com'

response = requests.get(url, cookies=cookies)

上述代码中,我们定义了一个cookies字典,并将cookies字典作为get()方法的cookies参数传递进去。get()方法会在发送请求时,自动将cookies字典中的信息添加到请求头的Cookie字段中。

2.3.3 proxies参数

proxies参数代表使用的代理服务器。在实际使用中,有些网站可能会限制同一IP地址的访问次数,为了避免这种情况,可以使用代理服务器来发送请求。比如:

import requests

proxies = {'http': 'http://10.10.1.10:3128', 'https': 'https://10.10.1.10:1080'}

url = 'https://www.baidu.com'

response = requests.get(url, proxies=proxies)

上述代码中,我们定义了一个proxies字典,并将proxies字典作为get()方法的proxies参数传递进去。get()方法会在发送请求时,自动将请求发送到指定的代理服务器。在实际使用中,我们需要根据代理服务器的具体情况,设置不同的代理服务器参数。

3. 经典案例:天气查询

在讲解Requests库的get()方法使用过程中,我们来看一个经典案例:天气查询。

现在,我们需要编写一个程序,根据用户输入的城市名称,自动查询该城市的天气信息。在本例中,我们将使用天气API,来获取城市的天气信息。

首先,我们需要准备一个含有城市名称的列表,用来生成查询链接:

cities = ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']

接下来,我们需要遍历该列表,逐个生成查询链接,并发送get()请求获取天气信息:

import requests

cities = ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']

for city in cities:

url = f'http://t.weather.sojson.com/api/weather/city/{city}'

response = requests.get(url)

weather = response.json().get('data').get('forecast')[0]

print(f'{city}:{weather.get("high")},{weather.get("low")},{weather.get("type")}')

在上述代码中,我们使用了f-string格式化字符串,将城市名称插入到查询链接中,生成了一个完整的查询链接。然后,使用get()方法发送get请求,获取返回的响应。从响应中,我们可以通过json()方法,获取返回的JSON数据,并使用get()方法,获取其中的所需信息。由于该API返回的数据中,forecast列表中的第一个元素,即forecast[0],包含的是当天的天气信息,因此我们只获取了forecast[0]的信息。

运行上述代码,将得到如下结果:

Beijing:12℃,1℃,晴

Shanghai:17℃,13℃,小雨

Guangzhou:20℃,15℃,小雨转多云

Shenzhen:20℃,16℃,阴

从结果中可以看出,我们成功地获取了城市的天气信息,并将其打印输出了出来。

4. 总结

本文主要讲解了Requests库的get()方法的基本用法以及常用参数的使用方法。通过本文的介绍,您应该已经掌握了如何使用get()方法发送GET请求,并了解了如何使用常用的可选参数,比如headers、cookies、proxies等。此外,我们还以天气查询为例,演示了如何使用Requests库发送get()请求,获取API返回的天气信息。希望本文对您有所帮助。

后端开发标签