更新时间:2023-09-06 来源:黑马程序员 浏览量:
当用户在浏览器的地址栏中直接输入某个URL地址或者单击网页上的某个超链接时,浏览器会使用GET方法向服务器发送请求。例如,在浏览器的地址栏中分别输入https://www.baidu.com/和 https://www.baidu.com/s?wd=python.按Enter键后打开百度首页和python关键词的查询结果页面。此时我们用Fiddler工具捕获刚刚发送的两个请求,可以看到这两个请求的请求方法都是GET。
在Requests库中,getO函数用于向服务器发送GET请求。该函数会根据传人的URL构建一个请求(每个请求都是Request类的对象),之后将该请求发送给服务器。getO函数的声明如下:
get(url,params=None,headers=None,cookies=None,verify=True, proxies=None, timeout=None,**kwargs)
上述函数中各参数的含义如下。
url:必选参数,表示请求的URL。
params:可选参数,表示请求的查询字符串。该参数支持3种类型的取值,分别为字典、元组列表、字节序列。当该参数的值是一个字典时,字典的键为url参数,字典的值为url参数对应的值,例如{“ie":"utf-8","wd":"python"}。
headers:可选参数,表示请求的请求头,该参数只支持字典类型的值。
cookies:可选参数,表示请求的Cookie信息,该参数支持字典或CookieJar类的对象。
verify:可选参数,表示是否启用SSL证书,默认值为True。
proxies:可选参数,用于设置代理服务器,该参数只支持字典类型的值。
timeout:可选参数,表示请求网页时设定的超时时长,以秒为单位。
下面分别以访问百度首页和python关键词的查询结果页面为例,演示如何使用get()函数发送不携带url参数和携带url参数的GET请求。
1.不携带url参数的GET请求
若GET请求的URL中不携带参数,我们在调用getO函数发送GET请求时只需要给url参数传入指定的URL即可。例如,使用getO函数发送GET请求访问百度首页,具体代码如下。
import requests # 准备URL base_url = 'https://www.baidu.com/' # 根据URL构造请求,发送GET请求,接收服务器返回的响应信息 response = requests.get(url=base_url) # 查看响应码 print (response.status_code)
上述代码中,首先定义了一个代表请求URL地址的变量base_url,然后调用requests库中的getO函数发送GET请求。当百度服务器接收到请求后会返回响应信息,并将响应信息保存到response中。最后通过访问response的status_code属性查看响应状态码,以确认此次访问是否成功。
运行代码,输出如下结果。
200
从输出的结果可以看出,服务器返回的响应状态码为200,说明成功访问了百度首页。
2.携带url参数的GET请求
如果GET请求的URL中携带参数,那么我们在调用getO函数时可以采用两种方式发送GET请求。第l种方式是将参数以“?参数名l=值1&参数名2=值2.”的形式拼接到URL后面,进而手动构建完整的URL,例如https://www.baidu.com/s?wd=python,并将完整的URL传入 url参数;第2种方式是将url参数转换为字典,之后将该字典传入params参数。
第1种方式的实现代码如下。
import requests base_url ='https://www.baidu.com/s' param = 'wd=python' #拼接完整的URL full_url = base_url +'?'+ param #根据URL构造请求,发送GET请求,接收服务器返回的响应信息 response = requests.get(full_url) #查看响应码 print (response.status_code)
运行代码,输出如下结果。
200
通过观察两次的输出结果可知,服务器返回的响应状态码都为200。这说明我们成功访问了python关键词的查询结果页面。