Requests库GET请求是使用HTTP协议中的GET请求方式对目标网站发起请求。
(不带参数的GET请求请看上一篇文章的练习)
使用Get方法带参数请求时,是params=参数字典,而不是data=参数字典。data=参数字典是post方法的参数。
- """
- 1.学习目标
- 必须掌握requests中带参数的get请求
- 2.语法
- requests.get(url,parmas=None)
- 2.1 不带参数的get请求(看上一篇中的练习)
- 2.2 带参数的get请求(如下)
- 3.操作步骤
- # 1.导入requests库
- # 2.明确请求地址
- # 3.明确请求参数
- data = {key:value} 字典格式
- # 4.发送请求获取返回数据
- 4.需求
- 使用requests库发送一个带参数的get请求
- """
- # 1.导入requests库
- import json
- import requests
-
- # 2.明确请求地址
- url = "http://127.0.0.1:8000/api/departments/"
- # 3.明确请求参数
- # 是一个字典类型数据
- data = {"$dep_id_list": "10,11"}
- # 4.发送请求
- response = requests.get(url=url, params=data)
- # print(response.json())
-
- # 将python对象转换为json字符串(格式化放回数据)
- result = json.dumps(response.json(), indent=2, ensure_ascii=False)
- # print(type(result)) # 字符串类型
- print(result)
-
-
- """
- 结果:
- {
- "count": 2,
- "next": null,
- "previous": null,
- "results": [
- {
- "dep_id": "10",
- "dep_name": "超神_10",
- "master_name": "陆兴雷_10",
- "slogan": "带头学习"
- },
- {
- "dep_id": "11",
- "dep_name": "超神_11",
- "master_name": "陆兴雷_11",
- "slogan": "带头学习"
- }
- ]
- }
- """
我们可以通过访问Httpbin
来查看或者调试Requests库发送请求的内容。
还是以上面的例子为例:
- # 1.导入requests库
- import json
- import requests
-
- # 2.明确请求地址
- # url = "http://127.0.0.1:8000/api/departments/"
- url = "http://127.0.0.1:9999/get"
- # 3.明确请求参数
- # 是一个字典类型数据
- data = {"$dep_id_list": "10,11"}
- # 4.发送请求
- response = requests.get(url=url, params=data)
- # response = requests.get(url='http://httpbin.org/get?name=admin&age=20') # 这种方式调用也可以
- # print(response.json())
-
- # 将python对象转换为json字符串(格式化放回数据)
- result = json.dumps(response.json(), indent=2, ensure_ascii=False)
- # print(type(result)) # 字符串类型
- print(result)
-
-
- """
- 接口返回结果:
- {
- "args": {
- "$dep_id_list": "10,11"
- },
- "headers": {
- "Accept": "*/*",
- "Accept-Encoding": "gzip, deflate",
- "Connection": "keep-alive",
- "Host": "127.0.0.1:9999",
- "User-Agent": "python-requests/2.18.4"
- },
- "origin": "127.0.0.1",
- "url": "http://127.0.0.1:9999/get?%24dep_id_list=10%2C11"
- }
- 我们可以看到args属性中有参数内容,
- 如果是不带参数的Get请求,args属性中是没有内容的,如下:
- {
- "args": {},
- "headers": {
- "Accept": "*/*",
- "Accept-Encoding": "gzip, deflate",
- "Connection": "keep-alive",
- "Host": "127.0.0.1:9999",
- "User-Agent": "python-requests/2.18.4"
- },
- "origin": "127.0.0.1",
- "url": "http://127.0.0.1:9999/get"
- }
- """
- 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
- 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
- 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
- 分享他们的经验,还会分享很多直播讲座和技术沙龙
- 可以免费学习!划重点!开源的!!!
- qq群号:110685036
例如上面例子中,请求头信息中"User-Agent": "python-requests/2.18.4"
,我们需要改变请求头中User-Agent
属性的内容,看下面例子:
- # 1.导入requests库
- import json
- import requests
-
- # 2.明确请求地址
- # url = "http://127.0.0.1:8000/api/departments/"
- url = "http://127.0.0.1:9999/get"
- # 3.明确请求参数
- # 是一个字典类型数据
- data = {"$dep_id_list": "10,11"}
-
- # 明确请求头信息
- headers = {
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400"}
-
- # 4.发送请求
- response = requests.get(url=url, params=data, headers=headers)
- # print(response.json())
-
- # 将python对象转换为json字符串(格式化放回数据)
- result = json.dumps(response.json(), indent=2, ensure_ascii=False)
- # print(type(result)) # 字符串类型
- print(result)
-
- """
- 接口返回结果:可以看到User-Agent属性变成了我们设置的内容了。
- {
- "args": {
- "$dep_id_list": "10,11"
- },
- "headers": {
- "Accept": "*/*",
- "Accept-Encoding": "gzip, deflate",
- "Connection": "keep-alive",
- "Host": "127.0.0.1:9999",
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400"
- },
- "origin": "127.0.0.1",
- "url": "http://127.0.0.1:9999/get?%24dep_id_list=10%2C11"
- }
- """
除此之外Get请求还有很多请求参数,如timeout
你可以设置请求时间,如果超过这个时间变自行结束请求,可以利用此判断请求代理的相应效率,避免在某些错误请求上浪费过多的时间
END今天的分享到此结束了~