• 使用Requests发送HTTP请求


    Python语言内置的urllib2模块也可以发送HTTP请求,但Requests包可以使用更简单的方式来发送GET/POST的HPPT请求。这时需要导入模块,如下所示:

    import requests

    发送GET请求

    一般来说,在大部分浏览器URL网址中输入网址发送的请求都是GET请求,这是向Web服务器获取资源的请求。Requests即调用get()函数来发送GET请求。

    发送Baidu网站的GET请求,如下所示:

    1. import requests
    2. r = requests.get("http://www.baidu.com")
    3. print(r.status_code)

    上述程序 代码导入requests模块后,调用get()函数发送HTTP请求,参数是URL网址字符串,变量r是响应的response对象。可以使用status_code属性获取请求的状态代码。

    运行结果如下:

    1. [Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
    2. 200
    3. [Done] exited with code=0 in 1.326 seconds

    上述运行结果 为200,表示请求成功;如果值是400~599,表示有错误,如404表示网页不存在。

    通过if/else条件检查状态代码来判断GET请求是否成功,如下所示:

    1. import requests
    2. r = requests.get("http://www.baidu.com")
    3. if r.status_code == 200:
    4. print("请求成功...")
    5. else:
    6. print("请求失败...")

    运行结果如下:

    1. [Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
    2. 请求成功...
    3. [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请求,并且加上参数,如下所示:

    1. import requests
    2. url_params = {'name': '陈会安', 'score': 95}
    3. r = requests.get("http://httpbin.org/get", params=url_params)
    4. print(r.url)

    上述代码需要建立 字典的参数,键是参数名称,值是参数值,在get()函数的params参数指定url_params变量值,r.url属性可以获取完整URL网址字符串。

    运行结果如下:

    1. [Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
    2. http://httpbin.org/get?name=%E9%99%88%E4%BC%9A%E5%AE%89&score=95
    3. [Done] exited with code=0 in 1.501 seconds

    上述运行结果的URL网址,name参数经过编码。

    在http://httpbin.org网站响应的是JSON数据,可以使用text属性输出响应字符串,如下所示:

    1. import requests
    2. data = {'name': '陈会安', 'score': 95}
    3. r = requests.get("http://httpbin.org/get", params=data)
    4. print(r.text)

    运行结果如下:

    1. [Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\tempCodeRunnerFile.py"
    2. {
    3. "args": {
    4. "name": "\u9648\u4f1a\u5b89",
    5. "score": "95"
    6. },
    7. "headers": {
    8. "Accept": "*/*",
    9. "Accept-Encoding": "gzip, deflate",
    10. "Host": "httpbin.org",
    11. "User-Agent": "python-requests/2.27.1",
    12. "X-Amzn-Trace-Id": "Root=1-6305819d-7ea175694ab20fae54a10a49"
    13. },
    14. "origin": "167.220.255.49",
    15. "url": "http://httpbin.org/get?name=\u9648\u4f1a\u5b89&score=95"
    16. }
    17. [Done] exited with code=0 in 7.047 seconds

    发送POST请求

    Requests包调用get()函数发送GET请求,同时,POST请求调用post()函数。POST请求就是发送窗体,如同URL参数,需要发送表单域的输入数据。

    调用post()函数发送http://httpbin.org/post的POST请求,如下所示:

    1. import requests
    2. post_data = {'name': '陈会安', 'score': 95}
    3. r = requests.post("http://httpbin.org/post", data=post_data)
    4. print(r.text)

    上述程序代码需要建立字典的发送数据,在post()函数中指定data参数是past_data变量值 ,r.text属性可以输出响应字符串,运行结果如下:

    运行结果:

    1. [Running] python -u "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\Ch4_2_2.py"
    2. {
    3. "args": {},
    4. "data": "",
    5. "files": {},
    6. "form": {
    7. "name": "\u9648\u4f1a\u5b89",
    8. "score": "95"
    9. },
    10. "headers": {
    11. "Accept": "*/*",
    12. "Accept-Encoding": "gzip, deflate",
    13. "Content-Length": "41",
    14. "Content-Type": "application/x-www-form-urlencoded",
    15. "Host": "httpbin.org",
    16. "User-Agent": "python-requests/2.27.1",
    17. "X-Amzn-Trace-Id": "Root=1-63058a6a-49ccd218040f0ed05a2ff9a6"
    18. },
    19. "json": null,
    20. "origin": "167.220.255.49",
    21. "url": "http://httpbin.org/post"
    22. }
    23. [Done] exited with code=0 in 1.603 seconds

    从上述运行结果中可以看到发送的数据。

  • 相关阅读:
    论文阅读 Dynamic Graph Representation Learning Via Self-Attention Networks
    分享一些常用的小程序免费源码
    Hadoop Streaming使用简介
    Qt浏览器模块的几点说明
    齐博x2新功能:如何对CMS等频道内容进行数据分表进行文本储值
    35.cuBLAS开发指南中文版--cuBLAS中的Level-2函数hbmv()
    Oracle在Logstash需求中碰到的问题处理方式
    axios封装
    SpringBoot+Vue项目社区团购系统
    SpringCloud复习:(8)Zuul内置过滤器
  • 原文地址:https://blog.csdn.net/DXB2021/article/details/126497460