Python语言内置的urllib2模块也可以发送HTTP请求,但Requests包可以使用更简单的方式来发送GET/POST的HPPT请求。这时需要导入模块,如下所示:
import requests
发送GET请求
一般来说,在大部分浏览器URL网址中输入网址发送的请求都是GET请求,这是向Web服务器获取资源的请求。Requests即调用get()函数来发送GET请求。
发送Baidu网站的GET请求,如下所示:
import requests
r = requests.get("http://www.baidu.com")
print(r.status_code)
上述程序 代码导入requests模块后,调用get()函数发送HTTP请求,参数是URL网址字符串,变量r是响应的response对象。可以使用status_code属性获取请求的状态代码。
运行结果如下:
[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
200
[Done] exited with code=0 in 1.326 seconds
上述运行结果 为200,表示请求成功;如果值是400~599,表示有错误,如404表示网页不存在。
通过if/else条件检查状态代码来判断GET请求是否成功,如下所示:
import requests
r = requests.get("http://www.baidu.com")
if r.status_code == 200:
print("请求成功...")
else:
print("请求失败...")
运行结果如下:
[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
请求成功...
[Done] exited with code=0 in 3.979 seconds
URL网址可以传递参数字符串,参数位于问号“?”之后 。如果参数不止一个,则使用“&”符号分隔,如下所示:
https://httpbin.org/get?name=陈会安&score=95
上述URL网址传递参数name和score,其值分别为“陈会安”和“95”。发送http://httpbin.org/get(HTTP请求/响应的测试网站)的GET请求,并且加上参数,如下所示:
import requests
url_params = {'name': '陈会安', 'score': 95}
r = requests.get("http://httpbin.org/get", params=url_params)
print(r.url)
上述代码需要建立 字典的参数,键是参数名称,值是参数值,在get()函数的params参数指定url_params变量值,r.url属性可以获取完整URL网址字符串。
运行结果如下:
[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
http://httpbin.org/get?name=%E9%99%88%E4%BC%9A%E5%AE%89&score=95
[Done] exited with code=0 in 1.501 seconds
上述运行结果的URL网址,name参数经过编码。
在http://httpbin.org网站响应的是JSON数据,可以使用text属性输出响应字符串,如下所示:
import requests
data = {'name': '陈会安', 'score': 95}
r = requests.get("http://httpbin.org/get", params=data)
print(r.text)
运行结果如下:
[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
{
"args": {
"name": "\u9648\u4f1a\u5b89",
"score": "95"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.27.1",
"X-Amzn-Trace-Id": "Root=1-6305819d-7ea175694ab20fae54a10a49"
},
"origin": "167.220.255.49",
"url": "http://httpbin.org/get?name=\u9648\u4f1a\u5b89&score=95"
}
[Done] exited with code=0 in 7.047 seconds
发送POST请求
Requests包调用get()函数发送GET请求,同时,POST请求调用post()函数。POST请求就是发送窗体,如同URL参数,需要发送表单域的输入数据。
调用post()函数发送http://httpbin.org/post的POST请求,如下所示:
import requests
post_data = {'name': '陈会安', 'score': 95}
r = requests.post("http://httpbin.org/post", data=post_data)
print(r.text)
上述程序代码需要建立字典的发送数据,在post()函数中指定data参数是past_data变量值 ,r.text属性可以输出响应字符串,运行结果如下:
运行结果:
[Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\Ch4_2_2.py"
{
"args": {},
"data": "",
"files": {},
"form": {
"name": "\u9648\u4f1a\u5b89",
"score": "95"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "41",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.27.1",
"X-Amzn-Trace-Id": "Root=1-63058a6a-49ccd218040f0ed05a2ff9a6"
},
"json": null,
"origin": "167.220.255.49",
"url": "http://httpbin.org/post"
}
[Done] exited with code=0 in 1.603 seconds
从上述运行结果中可以看到发送的数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。