在python中requests,关于python之requests库的调用语句为

  在python中requests,关于python之requests库的调用语句为

  本文主要介绍Python中请求库的学习方法。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。

  00-1010前言1。URL、URI和URN1的组成。URL、URI和URN2。请求2的组成。请求方法2。请求URL 3。请求标题4。请求正文3请求1。获取请求2。使用请求头3获取头参数。发布请求4响应1。响应状态代码2。响应标题3。回应正文摘要

  

目录

  好的记忆胜过糟糕的写作!最近需要使用Python中的requests库进行接口测试和爬虫相关。以前用过,但是忘了很久了。这次我就简单整理一下这一块(个人笔记)。

  

前言

  

一 URL,URI和URN

  URI的全称是统一资源标识符M,即统一资源标识符,用来标记一个资源。例如,http://www.baidu.com/代表一个百度网页。

  URL的全称是Uniform Resource Locator,即统一资源定位器。可以通过给定的路径和文件找到对应的资源,比如http://tougao.jb51.net/index.php? C=indexa=登录转发=http://tougao.jb51.net/This URL专门定位一个资源,根据路径可以实时找到。

  URN的全称是统一资源名,即统一资源名;它只命名资源,不指定任何路径来定位它们。

  它们之间的关系:URI包含URL,URN,也就是URL,URN是URI的子集。如果URI是一个房间,那么URL就是一个具体的房间(123房间),骨灰盒可以是房间里的东西(凳子),但我不知道这个东西(凳子)在哪里。如下

  

1. URL,URI和URN

  常见URL的组成一般如下。用这个网址分析:http://tougao.jb51.net/index.php? c=indexa=loginforward=http://tougao . jb51 . net/

  1.协议:用于访问资源的协议,如上面使用的https协议,以及其他协议,如http和FTP。

  2服务器的主机地址:可以是域名,也可以是IP地址。如果以上是editor.csdn.net访问的域名

  端口:服务器设置的接入端口。但是url地址中一般没有端口,因为服务器使用的是协议的默认端口,用户通过URL访问服务器时可以省略。比如http默认端口是80,https默认端口是443,ftp默认端口是22等等。

  4路径:存储资源的路径。一般是在域名/to之后吗?内容之间,以上是MD。

  5:具体查询方法,比如上面的URL参数not _ check out=1 articleid=122388528

  

2. URL的组成

  一般来说,请求是从客户端向服务器发起的,由四部分组成:请求方法、网站(URL)、请求头和请求体。下面是最常见的get请求和post请求的详细列表。

  

二 请求组成

  常见的请求方法如下

  GET:请求页面,数据包含在URL中。POST:主要用于提交表单或上传文件,数据包含在请求体中。HEAD:类似于GET请求,但是响应消息没有具体内容,用于获取头。

  >

  • PUT:用客户端传送的数据取代指定的内容
  • DELETE:请求服务器删除指定的页面
  • CONNECT:把服务器当作跳板,让服务器代替客户端访问其他网页
  • OPTIONS:允许客户端查看服务器的性能
  • TRACE:回显服务器收到的请求,主要用于测试或者诊断
  •   不过我们见到和使用的大多数都是GET和POST请求

      

      

    2. 请求网址

      请求的网址即上面说的URL

      

      

    3. 请求头

      请求头,一般是传送服务器需要的一些附加信息,其中比较重要的就是User-Agent,Referer,Cookie等,常用的请求有说明如下

      

    • Accept: 请求报头域,用于指定客户端可接受哪些类型的信息
    • Accept-Language: 指定客户端可接受的语言类型
    • Accept-Encoding: 指定客户端可接受的编码
    • Host:用于指定资源主机的IP和端口号,其内容为请求URL的原始服务器或网关的位置
    • Cookie:网站为了辨别用户进行会话跟踪而存储在用户本地的数据,它的主要功能是维持当前访问会话。
    • Referer: 用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做资源统计,防盗链接处理等。
    • User-Agent: 可以是服务器识别客户端使用的操作系统及版本,浏览器及版本信息等。所以在做爬虫时要加上此信息,可以伪装浏览器;不加的话很容易被识别为爬虫。
    • Conten-Type:互联网媒体类型,用来表示具体请求中媒体类型信息;如text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型

      

      

    4. 请求体

      请求体一般POST请求的时候才会有,因为GET请求的信息都在URL里。

      

      

    三 请求

      

      

    1. get请求

      如果我们要发起一个GET请求,直接调用requests库里的GET方法即可,如下

      

    • get请求时,请求参数一般放在URL里面,数据可以在URL里面看到

      

    import requests

      #get(url)

      res = requests.get(http://httpbin.org/get)

      print(res.text)

      

      请求网站是 http://httpbin.org/get,它会识别我们发起的是get请求,并返回对应的信息。如下

      

      不过不加请求头的话容易被禁止访问,访问知乎https://www.zhihu.com/ 如下

      

    import requests

      #get(url)

      res = requests.get(http://httpbin.org/get)

      res1 = requests.get(https://www.zhihu.com/)

      print(res1.text)

      

      

      

      

    2. get带请求头headers参数

      上面看见了,如果我们不构造请求头headers的话,容易被禁止访问,因为浏览器有反爬措施,如下

      

    import requests

      #get(url,headers)

      res1 = requests.get(https://www.zhihu.com/)

      print(res1.text)

      for i in res1.request.headers.items():

       print(i)

      

      

      结果返回403(禁止访问),因为浏览器会通过User-Agent参数了解到我们的电脑系统以及浏览器等信息,上面不带headers时,默认User-Agent为python-requests/2.22.0,这服务器一看就知道是脚本,那肯定就会禁止访问。这时就需要重新构造请求头,伪装成浏览器访问,如下

      

      将上面的user-agent值用代码传送,如下

      

    import requests

      #get(url,headers)

      headers = {

       User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36

      }

      res1 = requests.get(https://www.zhihu.com/, headers=headers)

      print(res1.status_code)

      for i in res1.request.headers.items():

       print(i)

      

      

      如上,重新构造请求头传了user-agent参数后,请求就成功了,user-agent也是我们传进去的值。

      

      

    3. post请求

      对于post请求,使用requests库发起也是很简单的,如下

      

    import requests

      data = {name: anxiaochong, age: 24}

      res = requests.post(http://httpbin.org/post, data=data)

      print(res.status_code)

      print(res.text)

      

      对于post请求来说,它的数据在URL里面是看不到的,数据一般存放在请体中,如上,我们发起一个post请求,请求参数是data,当我们请求成功后,它会返回如下信息。

      

      

      

    四 响应

      当我们发起请求之后,如果一切正常,就会得到相应的响应。我们的最终目的,就是要获取返回的数据,所以对返回的数据进行处理是非常重要的。

      

      

    1. 响应状态码

      状态码能够最基本的判定服务器对请求的响应情况,比如200就是请求成功,301就是重定向,404就是请求资源不存在,500就是服务器错误等,常见的一些如下

      200:请求成功,服务器已成功处理请求。

      301: 重定向,请求的网页已经移动到新位置

      400: 请求错误401: 未授权,请求没有进行身份验证或者验证未通过

      403: 禁止访问404:未找到,请求资源不存在500:服务器错误

      503:服务器无法使用

      python获取响应状态码如下

      

    #获取响应状态码

      import requests

      data = {name: anxiaochong, age: 24}

      res = requests.post(http://httpbin.org/post, data=data)

      #获取响应状态码

      print(res.status_code)

      

      

      

    2. 响应头

      响应头包含了服务器对请求的一些应答信息,如Server,Content-Type,Set-cookie等信息。如下

      

      

    • content-type: 返回数据的类型
    • sever:服务器名称,版本等信息
    • set-cookie: 会话cookie,下次请求需要带上。

      

      

    3. 响应体

      响应信息中最重要的当属响应体了,因为我们想要获取的信息基本都在里面。python的request库也有对应的方法了提取相关信息,如下

      

    import requests

      headers = {

       User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36,

       Cookie: _zap=cdbd7845-adac-4d87-ad39-2c6ce8fddde3; _xsrf=kD16ApICYLVrAfyvuW45BRI6jkdo4NcX; d_c0="ABDfdUZbRhSPTmuW3ExXOv346BuMqQ2oWaI=1641098931"; __snaker__id=P7yktK5PgsCmILtR; gdxidpyhxdE=r9dW%2F%2BxGfN1iooAQAiODTGfGh8mPnu43T4g3V7PKabUA7zMCUUys%5CWvuLdjQeB5r8MZAtwRAOKJUQgJonmDPkpo6C4CxSXwNAP%2FMUa1p52udf%5Cu5eqEoiM%5C5QlGEMdgp3PwqG5uSMvzKyXA5WjmVejZdMmvaqwy8Y7MT1SrgLpf0hG3Q%3A1641099836676; _9755xjdesxxd_=32; YD00517437729195%3AWM_NI=VXux5u3T%2BJ6a%2FwURu60bvpw8ui4mkL1mk0xGQnAgn4UlLc5lq9n%2Fq4nkL9dYlDDOpT8bbuEZZueOScQMFx9h6t9pFTxKkjpVf74kC5EdQT6WJ0AsLoU%2FtsViMqPMk64rVjE%3D; YD00517437729195%3AWM_NIKE=9ca17ae2e6ffcda170e2e6ee87e9699686839bdc73b2868ea2d54a839f9eaeb62183bb8ca7f839968f008cf92af0fea7c3b92a9688bb99b87ff18ce5abb56beda99bb3f83ef4beba91f634b7b7fc8eea48f3b3a5d1fb4d93b28f88ed4097b48484b868b3e7a2d0f440aeb584dae753b09c8cb0f360fcbeae96c8529aababb0d26993938a99bc64f6acf791c560bc95a58bf35ea6e9fc8cc23f87bc9fb5b55d8af08f94cf6597f1bc94d5638fafa0aeea3ef8ae9a8bc837e2a3; YD00517437729195%3AWM_TID=gBk1e8TwlKhAABAAUBN6rQOGA%2FnBFhk3; l_cap_id="ODdjYzkzYjc3ODRlNGU5ZGFhZGNlODZjNmVhZjUxOTk=16410989475e1742f2cfb1bc51e01c98dc554a343834ceb4fe"; r_cap_id="NWJjZTUwNzI3NTZkNGRlOGE2MDc4NjZhNTljMjQwMTE=164109894734aeb872f7b2def674441346a0be809d4d3f3818"; cap_id="YThjNTkwZTZiMjY5NGNiNWJmOWJkYjQzNDRjMWE5MDA=16410989477f4062306951584cd44180c28bb8a8fe90d732cd"; captcha_session_v2="21:010:164109911018:captcha_session_v288:THV2VWV1eWhIZUZTZmsvR1Yyd2hHRGNPcFc5QTc4bWNHNWVabzBDZ3JPZFRtUDltenRWeE1SUEtuVEZwcTBHSg==258d6e1ea988e9f89e94208600834adba972038afbbb273aacc3849fa44c2cf9"; z_c0=Mi4xR1ZYa0RRQUFBQUFBRU45MVJsdEdGQmNBQUFCaEFsVk5sMzItWWdEc09nbTQzZWhiejkwTGhyZTRadE1WSlVEeXZR1641099159763c9639b7d621f1e9a64d0e246cec75292d7277; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1641098932,1641217361; tst=h; SESSIONID=gMeSnpcPawUbmk3tMHN6I6Uc2xxUTfnKfx4Pj7xHJ4Z; JOID=VVkVA0wgiAleIRrUbidunj5sRpR9QcRsCk9stj5B-V08S3HhGwmh6jgnHdVpii0jv9C3ZZnJsok4l_oqAxMoR7k=; osd=UVoSCkwkiw5XIR7XaS5umj1rT5R5QsNlCktvsTdB_V47QnHlGA6o6jwkGtxpji4kttCzZp7Aso07kPMqBxAvTrk=; NOT_UNREGISTER_WAITING=1; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1642866191; KLBRSID=fe0fceb358d671fa6cc33898c8c48b4816428662071642866103

      }

      res = requests.get(https://www.zhihu.com/hot, headers=headers)

      print("响应状态码:", res.status_code)

      print("响应内容: ", res.text)

      print("获取的响应内容类型: ", type(res.text))

      print("响应头信息: ", res.headers)

      print("获取请求头信息: ", res.request.headers)

      print("获取请求体: ", res.request.body)

      print("获取cookie: ", res.cookies)

      print("cookie类型: ", type(res.cookies))

      print("获取编码格式: ", res.encoding)

      print("获取请求URL: ", res.url)

      

      

      

    总结

      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT软件开发工作室的更多内容!

    郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

    留言与评论(共有 条评论)
       
    验证码: