首页常见问题正文

怎样给浏览器发送GET请求?

更新时间: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关键词的查询结果页面。


分享到:
在线咨询 我要报名
和我们在线交谈!