Python爬虫的作用及工具和反爬机制,爬虫新手入门篇

文章目录

  • 一 什么是爬虫
  • 二 爬虫工具
  • 三. 反爬虫问题
      • Python爬虫技术资源分享
        • 1、Python所有方向的学习路线
        • 2、学习软件
        • 3、入门学习视频
        • 4、实战案例
        • 5、清华编程大佬出品《漫画看学Python》
        • 6、Python副业兼职与全职路线


在这里插入图片描述

一 什么是爬虫

爬虫能做什么

  • 政治角逐

2016年这场美国总统竞选被媒体称作“第一次数字化竞选”,希阿姨和川大大都组建了庞大的技术团队,将大量资金花在获取和使用投票者的信息上。民意调查结果,一直是总统大选时最倚重的数据来源。在长达半年的总统竞选活动中,会有许多组织或机构通过不同方式进行大量调查,并将结果汇总整理加工成民意调查数据。在更大的数据规模上,总统候选人们也采用了同样的策略,所依赖的数据来源也不仅仅是民意调查结果,还涵盖了诸多的如facebook这类的社交网站和公开及私有的数据库。

及时准确的收集这些数据,并且帮助制定策略以获得更多的选民支持。将美国超过2亿的选民资料,与大型网站与社交网络上的个人账号相互匹配起来,将网络行为对应到具体的个体,再和已经构成的、庞大的用户个人数据相结合,最终完全由准确数据来驱动竞选策略。

而以上这些就使得大数据分析技术成了两党候选人的重要武器。

  • 电商分析

抓取天猫、京东、淘宝等电商网的评论及销量数据,对各种商品(颗粒度可到款式)沿时间序列的销量以及用户的消费场景进行分析。

甚至还可以根据用户评价做情感分析,实时监控产品在消费者心目中的形象,对新发布的产品及时监控,以便调整策略。

  • 投资理财

雪球等财经类网站通过抓取雪球KOL或者高回报用户的行为,找出推荐股票。

  • 消费习惯分析

在大众点评、美团网等餐饮及消费类网站抓取各种店面的开业情况以及用户消费和评价,了解周边变化的口味,所谓是“舌尖上的爬虫”。

以及各种变化的口味,比如:啤酒在衰退,重庆小面在崛起。

  • 内部数据利用

企业在运营过程中产生的大量数据,其实是蕴含着巨大的价值,对企业未来的发展和创新商业模式都有着很大的帮助。充分的挖掘数据潜在价值,能帮助企业更好的细分市场,以助于公司能有针对性的为企业日后的发展提供数据支撑。更好的掌握市场动向,更好的对市场反应产生新的决策。

数据背后所隐藏的巨大商业价值正开始被越来越多的企业所重视,越来越多的企业开始进入大数据市场,建立各种大数据入口,以获得更多更大的海量数据。那么问题来了,数据从何而来?

什么是网络爬虫

所谓爬虫,其本质是一种计算机程序,它的行为看起来就像是蜘蛛在网上面爬行一样,顺着互联网这个“网”,一条线一条线地“爬行”。所以爬虫在英文中又叫作“Spider”,正是蜘蛛这个单词。

由于传统低效率的数据收集手段越来越不能满足当今日益增长的数据需求,但是面对互联网这样一个由数据构建而成的海洋,如何有效获取数据,如何获取有效数据都是极其劳神费力、浪费成本、制约效率的事情。很多时候,按照传统手段完成一个项目可能80%~90%的时间用于获取和处理数据。这样的矛盾冲突,搁在以往,搁在普通的人和普通的公司身上,除了用金钱去填补(直接购买数据)之外,似乎只有默默认命了。

然而现在,终于有了扭转之机,那就是驾驭爬虫技术。

二 爬虫工具

  1. 爬虫之urllib

  • urllib库request

urllib库是爬虫常用的一个库,通过这个库的学习,能够了解一些爬虫的基础技术。

下面以爬取某网站首页源码的示例代码介绍urilib库中常用的request()方法:

# 导入urllib库
import urllib.request
# urllib爬取某网站首页的步骤:
# (1) 定义一个url  即目标地址
url = 'http://www.xxx.com'
# (2) 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)
# (3) 获取响应中的页面的源码
# 这里read()函数可以获取响应,但是响应的格式是二进制的,需要解码
# 解码:decode('编码格式')  编码格式在 <head><meta chaset ></head>中显示
content = response.read().decode('utf-8')
# (4) 打印数据
print(content)
  • urllib库下载资源

下面介绍一下用urllib.request()方法如何下载文件:

# urllib下载文件的操作
# (1) 下载网页
url_page = 'http://www.baidu.com'
# 使用urillib.request.urlretrieve() 函数,
# 传参分别是url(网页的地址路径)、filename(网页文件的名字)
urllib.request.urlretrieve(url_page,'baidu.html')
# (2) 下载图片
url_img = 'https://xxx'
urllib.request.urlretrieve(url_img,'xxx.jpg')
# (3) 下载视频
url_video = 'https://xxx'
urllib.request.urlretrieve(url_video,'xxx.mov')
  • urllib库之GET请求
# get请求的quote()方法:单个参数的情况下常用该方法进行编解码
# 需求:用get请求的quote()方法获取源码 
# 找到网页地址url:此时复制的汉字会自动转成unicode编码,如下,即这段编码就是周杰伦三个汉字的编码
url = 'https://www.baidu.com/s?wd=%E5%91%A8%E6%9D%B0%E4%BC%A6'
# 寻找UA
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
}
# 定制请求对象
request = urllib.request.Request(url = url,headers = headers)
# 模拟浏览器向服务器发起请求
response = urllib.request.urlopen(request)
# 获取响应内容
content = response.read().decode('utf-8')
# 打印内容
print(content)
  • urllib库之POST请求
# post请求:
import urllib.request
url = 'https://xxx'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
}
data = {'data':'data'
}
import urllib.parse
# post请求的参数 必须 进行编码
data = urllib.parse.urlencode(data).encode('utf-8')
# post请求的参数是不会拼接在url 的后面的,而是需要放置在请求对象定制的地方
request = urllib.request.Request(url = url,data = data,headers = headers)
# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)
# 获取响应的数据
content = response.read().decode('utf-8')
import json
# 字符串 - - - > json 对象
obj = json.loads(content)
print(obj)
  • urllib库之handler处理器

首先简单介绍一下handler处理器:handler处理器是urllib库中继urlopen()方法之后又一种模拟浏览器向服务器发起请求的方法或技术。

它的意义在于使用handler处理器,能够携带代理ip,这为对抗反爬机制提供了一种策略(很多的网站会封掉短时间多次访问的ip地址)。

下面是handler处理器的具体使用方法,其中不含代理ip的部分,代理ip这部分将在下一篇笔记中介绍。

# handler处理器的基础使用
# 需求:使用handler访问百度 获取网页源码
import urllib.request
url = 'http://www.baidu.com'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'} 
request = urllib.request.Request(url = url,headers = headers)
# handler    build_opener    open 
# 第一步:获取handler对象
handler = urllib.request.HTTPHandler()
# 第二步:通过handler获取opener对象
opener = urllib.request.build_opener(handler)
# 第三步:调用open()函数
response = opener.open(request)
content = response.read().decode('utf-8')
print(content)
  • urllib库之IP池
# urllib代理
import urllib.request
url = 'https://www.xxx'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
proxies = {'http' : '40.83.102.86:80'
}
request = urllib.request.Request(url = url, headers = headers)
handler = urllib.request.ProxyHandler(proxies = proxies)
opener = urllib.request.build_opener(handler)
response = opener.open(request)
content = response.read().decode('utf-8')
with open('daili.html','w',encoding = 'utf-8') as fp:fp.write(content)
  1. 爬虫之requests

  • requests库的基础

首先,了解一下什么是requests库:

它是一个Python第三方库,处理URL资源特别方便,可以完全取代之前学习的urllib库,并且更加精简代码量(相较于urllib库)。

用requests库时,我们发起请求是通过requests.get()函数进行的,传参是目的网页的url(后续会有其他的传参,暂时此处传入一个url),并且用response变量接受服务器的响应。

import requests
url = 'http://www.xxx.com'
response = requests.get(url = url)
  • requests库的六种属性:

1️⃣ text属性:字符串形式返回网页源码(由于此时编码格式是gbk,中文部分可能会乱码,稍后解决)

print(response.text) # 由于没有设置编码格式,中文会乱码

2️⃣ encoding属性:设置相应的编码格式

response.encoding = ‘utf-8’

这之后的response就不会出现中文乱码现象了。

3️⃣ url属性:返回url地址

url = response.url

4️⃣ content属性:返回二进制的数据

content_binary = response.content

5️⃣ status_code属性:返回状态码 200是正常

status_code = response.status_code

6️⃣ headers属性:返回响应头

headers = response.headers

  • requests库的get请求
import requests
url = 'https://www.xxx.com'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
data = {'data' : 'data'
}
response = requests.get(url = url,params = data,headers = headers)
response.encoding = 'utf-8'
content = response.text
print(content)
  • requests库的post请求
# requests_post请求
import requests
url = 'https://www.com'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
data = {'data' : 'xxx'
}
response = requests.post(url = url,data = data,headers = headers)
content = response.text
import json
obj = json.loads(content.encode('utf-8'))
print(obj)
  • requests库的代理ip方法
# requests_ip代理
import requests
url = 'http://www.baidu.com/s'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
data = {'wd' : 'ip'
}
proxy = {'http:' : '218.14.108.53'
}
response = requests.get(url = url, params = data,headers = headers,proxies = proxy)
content = response.text
  1. 爬虫之BeautifulSoup

  • BeautifulSoup简介

在第一部分安装的介绍之前,先介绍一下什么是xpath,以及为什么我们要学习xpath:

首先,介绍一下bs4,它是又一种解析的手段,之前有xpath和jsonpath。bs4的特点是这样的:

BS4全称是Beatiful Soup,它提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。

BS4最舒服的一点是提供了更适合前端开发工作者使用的语言习惯,它的语法很大程度对前端开发工作者是友好的,同时它解析的对象是本地html文件和服务器的响应html文件。

  • BeautifulSoup使用

本地html的源码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>soupDemo</title>
</head>
<body><div><ul><li id = "l1">张三</li><li id = "l2">李四</li><li>王五</li><li>周六</li><a href="" id = "" class = "s1">soupDemo</a><span>hhh</span></ul></div><a href="" id = "s2" title = "s2">soupDemo2</a>
</body>
</html>

bs4的基本操作语法:

# 解析本地文件:bs4基础语法的学习
soup = BeautifulSoup(open('soup.html',encoding = 'utf-8'),'lxml')
# bs4的基础操作:
# (1) 根据标签名查找节点,找到的是第一个符合条件的节点:
print(soup.a) # 返回的是soupDemo而不是soupDemo2
# (2) 获取标签的属性:
print(soup.a.attrs)

三. 反爬虫问题

反爬虫方式

一般而言,抓取稍微正规一点的网站,都会有反爬虫的制约。反爬虫主要有以下几种方式:

通过UA判断:这是最低级的判断,一般反爬虫不会用这个做唯一判断,因为反反爬虫非常容易,直接随机UA即可解决。

通过单IP频繁访问判断:这个判断简单,而且反反爬虫比较费力,反爬虫绝佳方案。需采用多IP抓取。

通过Cookie判断:例如通过会员制账号密码登陆,判断单账号短时间抓取次数判断。这个反反爬虫也很费力。需采用多账号抓取。

动态页面加载:这个考验前端工程师的功底,如果前端写的好,各种JS判断,各种逻辑,像百度、淘宝一样,post登录很难。较好的方法,但是对于大牛,还是防不胜防。反反爬虫多采用渲染浏览器抓取,效率低下。

采用验证码:这里要么是登录的时候有验证码,要么是判断是爬虫时,不封IP,而是采用验证码验证,例如链家网。验证码是反爬虫性价比较高的方案。反反爬虫一般接入OCR验证码识别平台或者人工打码平台,亦或者利用TesseractOCR识别,亦或者采用神经网络训练识别验证码等。

如何反反爬虫

修改请求头:除了处理网站表单,requests 模块还是一个设置请求头的利器。HTTP 的请求头是在你每次向网络服务器发送请求时,传递的一组属性和配置信息。HTTP 定义了十几种古怪的请求头类型,不过大多数都不常用。只有下面的七个字段被大多数浏览器用来初始化所有网络请求(表中信息是我自己浏览器的数据)。

修改爬虫的间隔时间:修改爬虫的间隔时间,使用随机间隔时间,模拟访问操作。合理控制速度是你不应该破坏的规则。所以请控制采集速度!

使用代理:上网者可以通过正向代理的方法隐藏自己的 ip。正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端。正向代理的情况下,客户端必须要进行一些特殊的设置才能使用。

登录获取数据:在采集一些网站时 cookie 是不可或缺的。要在一个网站上持续保持登录状态,需要在多个页面中保存一个 cookie。有些网站不要求在每次登录时都获得一个新 cookie,只要保存一个旧的“已登录”的 cookie 就可以访问。


Python爬虫技术资源分享

小编是一名Python开发工程师,自己整理了一套 【最新的Python系统学习教程】,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。

保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

如果你是准备学习Python或者正在学习,下面这些你应该能用得上:

1、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

2、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

在这里插入图片描述

3、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

img

4、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

5、清华编程大佬出品《漫画看学Python》

用通俗易懂的漫画,来教你学习Python,让你更容易记住,并且不会枯燥乏味。

在这里插入图片描述

6、Python副业兼职与全职路线

在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

👉CSDN大礼包:《Python入门资料&实战源码&安装工具】免费领取安全链接,放心点击

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/577099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选择激光打标机:为您的产品增添独特标识

激光打标机是一种高科技的打标设备&#xff0c;以其独特的标记效果和精度&#xff0c;逐渐成为了工业制造领域中不可或缺的一部分。选择激光打标机&#xff0c;不仅可以为您的产品增添独特的标识&#xff0c;还可以提升品牌形象&#xff0c;增强产品附加值。 一、激光打标机的独…

如何使用内网穿透工具实现Java远程连接本地Elasticsearch搜索分析引擎

文章目录 前言1. Windows 安装 Cpolar2. 创建Elasticsearch公网连接地址3. 远程连接Elasticsearch4. 设置固定二级子域名 前言 简单几步,结合Cpolar 内网穿透工具实现Java 远程连接操作本地分布式搜索和数据分析引擎Elasticsearch。 Cpolar内网穿透提供了更高的安全性和隐私保…

光伏制氢:技术前沿与未来展望

光伏制氢&#xff1a;技术前沿与未来展望 一、引言 随着全球对可再生能源需求的日益增长&#xff0c;光伏制氢技术作为一种将太阳能转化为氢能的有效方式&#xff0c;正逐渐受到人们的关注。通过光伏发电和电解水相结合&#xff0c;我们可以将丰富的太阳能资源转化为清洁的氢…

腾讯混元、阿里通义千问成功通过中国首个“大模型标准符合性评测”

通义千问官网链接&#xff1a;通义通义&#xff0c;阿里云大模型的统一品牌&#xff0c;覆盖语言、听觉、多模态等领域&#xff0c;致力于实现类人智慧的通用智能。不仅有语言模型产品通义千问和文生图模型产品通义万相&#xff0c;也有基于通义大模型的通义听悟、通义灵码、通…

LabVIEW在齿轮箱故障诊断中的应用

LabVIEW在齿轮箱故障诊断中的应用 在现代机械工业中&#xff0c;齿轮箱作为重要的传动设备&#xff0c;其性能稳定性对整体机械系统的运行至关重要。故障的及时诊断和处理不仅保障了设备的稳定运行&#xff0c;还减少了维护成本。利用LabVIEW强大数据处理和仿真能力&#xff0…

【网络编程】基于UDP数据报实现回显服务器/客户端程序

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 前言 我们如果…

VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格(二)

1、文档说明 1.1、内容回顾 之前发表过相关文章《VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格&#xff08;一&#xff09;》&#xff0c;本篇文章对上一篇文章做补充说明。 第一篇文章是通过拥有权限&#xff0c;则隐藏价格的模式&#xff0c;即对需要隐藏价格的…

GenerateBlocks Pro插件 构建更好的WordPress网站

GenerateBlocks Pro插件 构建更好的WordPress网站 GenerateBlocks Pro插件是一个 WordPress 插件&#xff0c;几乎可以完成任何事情&#xff0c;可让您创建轻量级和多功能的网站。由与流行且快速的 GeneratePress 主题相同的创作者构建&#xff0c;该插件不负众望。使用 Genera…

大疆L1激光点云数据处理(DJI Terra-大疆智图)

大疆L1激光点云数据处理 前言处理步骤查看成果 前言 大疆L1是一个激光雷达载荷&#xff0c;该载荷包括一个激光点云传感器和一个可见光传感器。截止2023年12月&#xff0c;已经发布了升级版L2&#xff0c;本文以L1获取的数据为例。 在使用L1的时候&#xff0c;应该开启RTK模式…

如何修复无法读取的U盘,修复U盘的方法

无法读取U盘是常见的故障&#xff0c;可能的原因有很多&#xff0c;例如U盘驱动器问题、文件系统损坏、电脑USB接口问题等。本文将详细分析这些原因&#xff0c;并提供相应的解决方法&#xff0c;帮助用户解决无法读取U盘的问题。 如何修复无法读取的U盘&#xff0c;修复U盘的方…

二叉树题目:分裂二叉树的最大乘积

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;分裂二叉树的最大乘积 出处&#xff1a;1339. 分裂二叉树的最大乘积 难度 6 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root&…

STL 优先队列priority_queue练习

目录 STL之优先队列priority_queue 绝对值排序问题&#xff08;题目描述&#xff09; &#xff08;一&#xff09;使用优先队列prioroty_queue实现绝对值降序排序 &#xff08;二&#xff09;使用vector实现绝对值降序排序&#xff08;使用库中的全局sort()函数&#xff09;…

P5740最厉害的学生

一&#xff1a;题目 二&#xff1a;思路分析 这道题就是会使用C语言的结构体&#xff0c;然后知道结构体数组 三&#xff1a;代码 #include <stdio.h> struct Stu {char name[10];int c;int m;int e; }s[1005];//结构体数组 int main() {int n 0;scanf("%d"…

GEE:基于MCD64A1的GlobFire的火灾时间

作者:CSDN @ _养乐多_ 本文将介绍如何可视化 JRC/GWIS/GlobFire/v2/FinalPerimeters 数据集中每个火灾斑块,以及火灾斑块发生火灾的时间。因为原始数据的时间是年月日格式,可视化只能是将其转换成 Day Of Year (DOY,一年中的天数,0-366),这样才能了解火灾发生的具体时…

4.9【共享源】流的多生产者和消费者

当一个系统中存在多个生产者和消费者时&#xff0c;情况可能会变得复杂。 了解生产者和消费者流之间支持的基数非常重要。 本质上&#xff0c;一个生产者流可以与多个消费者流连接&#xff0c;但一个消费者流只能连接到一个生产者流。请注意&#xff0c;基数关系仅限于单个流&…

Fusion360 服务器验证警告 解决方案

提示信息 服务器验证警告 无法验证安全证书。代理服务器、安全软件或废弃的操作系统补丁常常会触发此错误消息。 如果要更改此设置&#xff0c;请访问“网络/服务器验证"首选项页面。 解决方案 方案1:关闭你的代理软件&#xff08;方便快捷&#xff09; 方案2:观察代理软…

视频号小店需要多少资金?

我是电商珠珠 视频号团队自22年发展视频号小店以来&#xff0c;为人所知。和抖音电商一样&#xff0c;都是在发展的第二年掀起了浪花。 也就是今年&#xff0c;很多想要入驻的新手&#xff0c;对于视频号小店不太了解&#xff0c;不清楚到底需要多少资金。 今天&#xff0c;…

欧洲:数百家电商网站泄露了用户支付信息

欧洲刑警组织在12月22日发布的新闻稿中&#xff0c;称由 17 个国家联合参与的执法行动已发现数百个电商平台存在恶意脚本攻击&#xff0c;其用户的信用卡或支付卡数据已遭到泄露。 这项已进行两个月的执法行动由希腊牵头&#xff0c;欧洲刑警组织参与协调&#xff0c;并得到网络…

卷积神经网络基础与补充

参考自 up主的b站链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 https://blog.csdn.net/m0_37867091?typeblog CNN的历史发展&#xff1a; 这一点老师上课的时候也有讲到&#xff0c;BP的出现对CNN的发展至关重要 卷积的特性&#x…

第十五节TypeScript 接口

1、简介 接口是一系列抽象方法的声明&#xff0c;是一些方法特征的集合&#xff0c;这些方法都应该是抽象的&#xff0c;需要有由具体的类去实现&#xff0c;然后第三方就可以通过这组抽象方法调用&#xff0c;让具体的类执行具体的方法。 2、接口的定义 interface interface_…