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

news/2024/7/3 23:03:05


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

    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:允许客户端查看服务器的性能

请求头

    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-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'<img src="/tp/zjbq/202002291134181837.gif">'
    # <img src="/tp/zjbq/202002291134189680.gif">
    # url_add = r'<img src="/tp/zjbq/(.*?)"'
    url_add = r'<img src="(.*?)"'
    # 第三步
    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)

http://www.niftyadmin.cn/n/2225948.html

相关文章

oracle用户crontab无权限使用和不能执行计划

oracle用户crontab无权限使用[oracledeer ~]$ crontab -e/var/spool/cron/oracle: Permission denied出现如上错误&#xff0c;查看crontab的权限。[rootdeer u01]# ll /usr/bin/crontab -rwxr-xrwx. 1 root root 47520 Mar 4 2011 /usr/bin/crontab因为crontab要使用到除了c…

ReactJS入门ES6写法

参考&#xff1a; React 官方网站 ECMAScript 6 入门 React 入门实例教程 HTML 模板 使用 React 的网页源码&#xff0c;结构大致如下。 <!DOCTYPE html> <html><head><script src"../build/react.js"></script><script src&…

编译gost2.5版本

编译gost2.5版本 yum install git go -y git clone https://github.com/ginuerzh/gost.git /root/go/src/github.com/ginuerzh/gost git clone https://github.com/go-log/log.git /root/go/src/go-log/log mkdir /root/dist/ cd /root/go/src/github.com/ginuerzh/gost/cmd/g…

Jmeter 入门 从0-1 基础篇-实操

Jmeter 入门 从0-1 基础篇 笔记有的图片链接可能失效了&#xff0c;等我修改好了在来编辑哈 文章目录1 JMeter1.1 JMeter环境搭建和基本使用1.1.1 JMeter环境搭建1.1.2 JMeter常用目录1.1.3 基本配置-汉化jmeter1.1.4 jmeter基本操作1.2 JMeter基本元件1.2.1 JMeter元件类型1.…

3.5 黑盒测试方法-逻辑推断法

一、使用因果图法设计测试用例 1.1 因果图法概述: 在一个功能模块或一个界面中&#xff0c;往往会有多个控件&#xff0c;这些控件一般会有一定的制约关系或者是组合关系&#xff0c;并且输出依赖于输入的条件。如 果只是单独去测每个控件&#xff0c;往往使测试有很多冗余数据…

react-router学习笔记

参考&#xff1a; React Router 中文文档 阮一峰 React Router 使用教程 1.Router,hashHistory,Route 首先下载react-router $ npm install react-router --save 需要注意的是&#xff0c;react-router更新很快&#xff0c;API也在持续升级&#xff0c;也许你看到市面很多…

rsync exclude include二级目录或子级目录

之前的写法&#xff0c;d目录下面的文件不同步&#xff0c;网上的大部分例子都是同步的a/ b/ c/这种一级目录&#xff0c;二级目录的例子没有&#xff0c; rsync -auHzSv --ignore-errors --partial --password-file/etc/rsync.pas --include "a/" \--include &quo…

Python 操作 lxml库与Xpath(爬取网页指定内容)

Python 操作 lxml库与Xpath&#xff08;爬取网页指定内容&#xff09; 软件测试工作中常用 活动地址&#xff1a;CSDN21天学习挑战赛 文章目录1.Python lxml库介绍1.1 安装lxml模块库1.2 lxml 是什么1.2.1 Element类简介1.2.2 从字符串或文件中解析XML1.2.3 ElementPath类简介…