• Python requests库(爬虫和接口测试)



    活动地址:CSDN21天学习挑战赛

    Python requests库(爬虫和接口测试)

    1.1 安装requests模块库:

    安装request:pip install requests
    
    • 1

    requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。可以说,Requests 完全满足如今网络的需求

    1.1.1 requests常用属性或方法

    属性、方法描述说明
    response = requests.get(url)发送请求获取的响应对象(最常用)
    response = requests.post(ur1)发送请求获取的响应对象
    response.url响应的ur,有时候响应的ur1和请求的uI并不一致
    response.status_code响应状态码,如: 200,404
    response.request.headers响应对应的请求头
    response.headers响应头
    response.request.cookies响应对应请求的cookie,返回cookieJar类型
    response.cookies响应的cookie (经过了set- cookie动作,返回cookieJar类型)
    response.json()自动将json字符串类型的响应内容转换为python对象(dictor ls)
    response.text返回响应的内容,str类型
    response.content返回响应的内容,bytes类型

    1.1.2 get请求和post请求

    POST和GET是HTTP请求的两种方式,都可实现将数据从浏览器向服务器发送带参数的请求。

    HTTP请求底层协议都是TCP/IP,所以两者没有本质的区别。

    GET方法

    GET是获取的意思,顾名思义就是获取信息。GET是默认的HTTP请求方法。

    GET方法把参数通过key/value形式存放在URL里面,如果参数是英文数字原样显示,如果是中文或者其他字符加密(Base64)URL长度一般有限制所以GET方法的参数长度不能太长。由于参数显示再地址栏所以不安全,一般需要保密的请求不使用GET。

    POST方法

    POST是邮件的意思,顾名思义就像一封信一样将参数放在信封里面传输。它用于修改服务器上的数据,一般这些数据是应该保密的,就像信件一样,信的内容只能收信的人看见。例入当用户输入账号和密码登录时账号和密码作为参数通过HTTP请求传输到服务器,这时候肯定不能用GET方法将账号密码直接显示再URL上,这时候就应该用POST方法保证数据的保密性。

    1.1.2 HTTP 协议

    http请求由请求行,请求头,请求体组成:

    • 请求行(request line):用于说明请求类型、要访问的资源路径、HTTP版本号(GET /index.html HTTP/1.1)

    • 请求头部(header):用于说明服务器要使用的附加信息

    • 一个空行

    • 请求数据(body):任意添加的数据

      image-20220815173232395

    请求行由请求方法、请求url、http协议及版本组成。

        请求方法:get、post、head、put、delete、trace、connect、options
        get用来请求指定页面的内容,并返回实体主体,post向服务器提交资源数据进行请求处理,post请求可能会导致新的资源的建立或者已有资源的修改,post比get更安全,因为get方法数据存放在请求行里的url末尾,而post方法数据存放在请求体里,get有url的长度限制,post能发送的数据更大,post不会被缓存在服务器日志,post能发送更多的数据类型,get只能发送ASCII码;但是post比get慢;
    
            Head:用于获取报头,类似于get请求,只不过返回的响应中没有具体的内容
            Put:从客户端向服务器传送的数据取代指定的文档的内容
            Delete:请求服务器删除指定的页面
            Trace:回显服务器收到的请求,主要用于测试或诊断
            Connect:保留将来使用
            OPTIONS:允许客户端查看服务器的性能
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    请求头

        Host:请求的web服务器域名地址,也就是请求被发送的目的地
        Accept:指定客户端接受哪些类型的信息
        Accept-Language:浏览器说明自己接收的语言
        Authorization:证明客户端有权查看某个资源
        Cookie:http请求发送时,会把保存在请求域名下的所有cookie值一起发送给web服务器
        Content-Type:Body编码方式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.HTTP协议的传输

    Request —URL + request headers(请求头信息)
    Response —HTML ++ responce headers(返回头信息)

    General
    Request URL: https://www.baidu.com/
    Request Method: GET requests的获取方法
    Status Code: 200 OK 返回值
    Remote Address: 14.215.177.39:443 服务器名称
    Referrer Policy: no-referrer-when-downgrade

    4.请求头信息中重要的三个信息

    1. User-Agent —身份是什么

    2. Referer —跳转网页是什么(即现在的网页是从哪个网页来的)

    3. cookie —本地存储信息的—与服务器的session一 一对应
      添加的顺序:1—>2—>3如果能够获取,不再添加
      如果加上都不行,把headers全部复制下来

    image-20220815180219324image-20220815191900616

    2 .Python 爬一个网站的图片并保存到本地

    未完待续

    import requests
    import re
    
    
    # https://qq.yh31.com/zjbq/2999374.html
    # 定义一个函数目的:获取每张要爬取图片的地址
    # 1.先要找到目标网页https://qq.yh31.com/zjbq/2999374.html 源代码数据
    # 2.用正则来匹配不同图片的地址产生个匹配之 后的结果
    # 3.可以通过源代码和匹配之后的结果来找到爬取图片的地址
    
    
    def get_urls():
        # 第一步
        response = requests.get('https://wenku.baidu.com/view/9453dc5801768e9951e79b89680203d8ce2f6ad8.html')
        # 第二步
        # .*  表示:匹配任意数量不换行的字符
        # r''
        # 
        # url_add = r'
        url_add = r'
        # 第三步
        url_list = re.findall(url_add, response.text)
        # print(url_list)
        return url_list
    
    
    # 定义第二个函数 目的:下载数据
    
    def get_gif(url, name):
        response = requests.get(url)
        # G:\爬虫下载\图片
        with open('G:\爬虫下载\图片\%d.gif' % name, 'wb') as ft:
            # response.content 二进制
            ft.write(response.content)
    
    
    if __name__ == '__main__':
        url_list = get_urls()
        # 定义一个变量 目的:给图片命名
        a = 1
        for url in url_list:
            com_url = 'https://qq.yh31.com/' + url
            # print(com_url)
            get_gif(com_url, a)
            a += 1
            print(com_url)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
  • 相关阅读:
    51单片机内部外设:实时时钟(SPI)
    java计算机毕业设计springboot+vue+elementUI永加乡精准扶贫信息管理系统
    Python进阶教程:pandas数据分析实践示例总结
    C++学习笔记03-类的默认成员函数
    数学基础(六)估计、偏差、方差
    Dubbo基础
    WebStorm stylelint 自动修复
    [附源码]Python计算机毕业设计Django点餐系统
    9.1 C++ STL 排序、算数与集合
    Servlet---从创建项目到部署项目的整个流程
  • 原文地址:https://blog.csdn.net/u014096024/article/details/126353475