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


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

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

文章目录

  • 1.1 安装requests模块库:
    • 1.1.1 requests常用属性或方法
    • 1.1.2 get请求和post请求
      • GET方法
      • POST方法
    • 1.1.2 HTTP 协议
  • 2 .Python 爬一个网站的图片并保存到本地

1.1 安装requests模块库:

安装request:pip install requests

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):任意添加的数据

请求行由请求方法、请求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:允许客户端查看服务器的性能

请求头

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

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-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)

你可能感兴趣的:(Python基础,python,爬虫,开发语言)