第6课:学习用 requests 请求网站,并得到网站数据【免订阅版】

2024-08-20 17:08

本文主要是介绍第6课:学习用 requests 请求网站,并得到网站数据【免订阅版】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本期课程目录:

  • 什么是 requests:
  • 如何安装 requests:
  • Requests 库的使用:
      • 那么我们怎么使用 requests 来模拟浏览器,去请求网站呢?
      • requests.get() 解释:
      • 什么是网址:
      • 用 requests.get() , 请求网站 是否成功请求:
      • 用 requests ,打印输出获取到的请求信息:
      • 代码整体思路:

什么是 requests:

requests 中文翻译:请求(Requests) ,那什么是请求呢?字面意义就是 提出要求,希望得到满足。 比如:“张三对李四说,能能去讲台帮我拿一下试卷吗?” 【这一句话理解为:就是张三对李四 发送了一个请求的意思】 而 李四听到张三 这句话后, 【理解为:李四接收到了张三的请求后,开始分析请求,得到请求是帮他去讲台拿一下试卷】 李四走上了讲台,找到了属于张三的试卷,然后走回来把试卷给了张三。

上述那一段举例,就是模拟了请求的过程。同理,我们在网页上 点击输入文字按回车 等操作。都是在向网站发送请求。然后网站根据你的操作的不同,反馈给你结果也是不一样。就好像,张三对李四说 拿下笔,那么李四拿回来的就是笔,张三对李四说 拿下 书包,那么李四拿回来的就是 书包。

为什么我们要在爬虫中用到这个 requests 呢?

因为在Pycharm 或 python IDE 的这种编辑器,不能像浏览器那样,能直接通过鼠标和键盘等人为操作对网站发送 请求。我们只能通过代码去发送请求,来要求网站帮我做什么事。那用什么代码呢?就是用 requests 。

Requests 在python 专业解释:

Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作时间,完全满⾜HTTP测试需求。 urilib 库 ,在后续的课程中会详细讲解。

如何安装 requests:

1.在pycharm 中安装 requests ,点击 编辑器工具栏的 File ,再点击 setting … 。

在这里插入图片描述

2 点击Project:xxxxx , 再点击 Project Interpreter 。

在这里插入图片描述
3. 点击 + 号

在这里插入图片描述

4.在输入框中输入 requests , 然后点击 Install Package 。

在这里插入图片描述

此致,reuqests ,就安装好了。

Requests 库的使用:

1.创建一个 python 文件,在 python 文件中写入 以下代码:

#encoding:utf-8import requests

代码解释:
#encoding:utf-8 ,这个代码是指 python 所写的所有字符编码为 utf-8 ,如下图所示:

在这里插入图片描述

在后面学习写代码的时候,第一句代码必须要加这个哟。

import requests

import requests: 导入 requests 库的意思,在我们需要用到某个模块,包 ,库的时候,就需要用 import 库名称,然后才能使用这个库的功能。就类似生活中,我们开车,那就需要往车里面加(导入 import )汽油,而车,有这个汽油后,才能开。

英文翻译:
import 美 [ˈɪmpɔːrt , ɪmˈpɔːrt] ,v.进口;输入;引进;导入;移入

那么我们怎么使用 requests 来模拟浏览器,去请求网站呢?

我们以 CSDN 这个网站来举例子,CSDN 首页网站是:https://www.csdn.net/ ,代码如下。

#encoding:utf-8import requests
requests.get("https://www.csdn.net/") # 请求 CSDN 网站

我相信大家已经看到了 ,这句代码: requests.get(“https://www.csdn.net/”) ,在 requests.get(), 括号里面,就是你需要请求的网址。

requests.get() 解释:

大家肯定好奇, requests.get() ,为什么后面还要跟一个 .get() ,在我第一课《第1课:什么是爬虫?什么是Python ?》中 讲到一个 类 和 函数 。 类 中包含多个函数,函数中包含功能,方法等。那 requests 就是一个类,其中的 get() ,就是 requests 类的一个函数,在我们要用 requests 其中一个函数的功能时候,就需要用 . (点) 这个符号去调用出来。所以我们就要写成 requests.get() -----(类 . 函数) 【requests 类 调用使用其中 get 函数功能】,在后面中的学习使用中,我们都需要这样去使用。我在后面课程中就不在讲解为啥要这样了。

requests 类中 ,当然肯定不止 get 这么一个函数了。以下是一个表格,展现了requests 中的重要函数解释:

函数(使用方法)解释
requests.request(url)构造一个请求,支持以下各种方法
requests.get(url) 获取请求html的主要方法 【也是最重要的,后面学习都要用到】
requests.post(url)向html网页提交post请求的方法
requests.head(url)获取html头部信息的主要方法
requests.put(url)向html网页提交put请求的方法
requests.patch(url)向html提交局部修改的请求
requests.delete(url)向html提交删除请求

上述列表中括号中的 url 的意思是 网址 的意思。

什么是网址:

在了解什么网址之前,我们需要了解什么是服务器:
服务器:就是一台计算机,里面存放者网站,数据,图片等等一些数据。和我们生活中用的计算机有什么区别呢?一般我们生活中电脑都叫做客户端计算机。而服务端计算机,就叫服务器,用来服务这些客户端的计算机。目前你只需要这么理解就行。更深层的理解,就不需要了。而服务器的地址我们称为 IP地址 或者 域名

什么是IP地址 什么是IP:

这里要注意的是,IP地址哦,IP和 IP地址是两样的哦,

IP :是 网络之间互连的协议,具体不在详解。感兴趣可以去学习计算机网络基础知识

IP地址 :是互联网协议地址,又译为网际协议地址。在我们上网去访问某个网站,都是先要找到IP地址,才能访问这个网站。在网络中IP地址是以 数字 表示 例如:45.23.11.23 这样的。IP地址分为 内网IP 和 外网IP,什么是内网IP呢,就是私有的IP地址,外面的人是不能进行访问的。外网IP就是公有的,外面的人随便都可以访问。

而我们这里讲的就是外网IP,外网IP就好像你家在某某省某某市某某街道某某小区某某门牌号的地址一样。在浏览器搜索框输入 IP 关键词,就能看到你在网络中的地址什么。你去访问别人记录都是这个地址。

什么是域名:
域名就是 服务器的地址,我们可以把服务器看成一个你住的房子,而域名就是这个你房子的 地址 的 别名,比如叫张三家 。

IP地址 和 域名是什么关系:
在网络中,其实我们服务器的地址都是 IP 地址(类似于:89.24.220.55),IP 地址分为内网 IP地址和外网IP地址,我们能够不受限制 访问的 是 外网IP地址。但是 我们要去访问一个地址,需要记住他的IP地址,太过于难记。所以我们就需要用更简单的方式去记,从而域名诞生了。就像我们人,都有一个身份证,实际身份证号码才是你。但是我们不可能叫你,就叫一串数字,所以我们就取了个名字。叫张三。

什么是网址:

域名是你家的地址,那么网址就是你家厨房,客厅,卫生间,卧室的位置。
域名:https://www.csdn.net/
网址:https://www.csdn.net/nav/python?spm=1000.2115.3001.4125

上述网址中紫色的部位,就是就相当于你家的厨房,客厅,卫生间等位置。
在网站中一般域名的地址,通常是网站的 首页地址,上述紫色部位,就是网站中的一个模块地址,就好像你家的客厅位置。

有些时候,我们通常叫 域名也叫网址。在我们请求网站,请求域名,请求网址,也叫 请求服务器,因为服务器才是网站的本体,也可以叫 访问域名,访问网址,访问服务器。

那么我们请求服务器后,服务器给我们反馈的是什么样子的信息呢?

在我们日常生活中,用电脑的浏览器去访问请求网站,看到都是图片啊,视频啊,文字啊等一些媒体信息。其实实际服务器反馈给浏览器的都是一些代码, 那为什么是图片,视频等媒体信息,是因为浏览器根据代码做了解析,从而给我们展现了可视化的媒体信息。

用 requests.get() , 请求网站 是否成功请求:

在我们请求网站的时候,首先要判断,我是否能成功的访问,这个网站,成功访问后,再去请求这个网站中的数据信息。

代码如下:

#encoding:utf-8import requestsprint(requests.get("https://www.csdn.net/"))

在代码中 ,print() ,就是打印的意思,用来输出我们代码运行的信息。但是我们这样写一个输出信息代码,并不是很美观,所以我们给 requests.get(“https://www.csdn.net/”) 取个requ名字, 这个名字可以随便取,不能数字和一些特殊符号开头,下划线( _ )除外,中文也可以。 。这个名字我们在计算机中叫 变量名,代码如下:

import requestsrequ = requests.get("https://www.csdn.net/")
print(requ)

用 = 号,给代码取名字,我们也叫做赋值,你就当 鬼上身附到你身上。requ 就是你(名字), requests.get(“https://www.csdn.net/”) 就是鬼,附到你身上,你就相当于是鬼了。也就是 你等于就是鬼 ,鬼等于就是你 ,所以用等于号 = 。

代码取名 正确和错误 案列:

_sdad = requests.get("https://www.csdn.net/") # 这个是可以的,特殊符号的下划线 可以做开头的变量名。
SAAdad = requests.get("https://www.csdn.net/") # 这个是可以的
中文 = requests.get("https://www.csdn.net/") # 这个是可以的,但不建议取
111sss = requests.get("https://www.csdn.net/") # 这个是不可以的,不能数字开头
%&……%&%111sss = requests.get("https://www.csdn.net/") # 这个是不可以的,不能特殊符号开头

Pycharm 写完代码后,如何运行代码呢?

鼠标右键,你写代码的区域,然后点击,Run 你的python文件名 ,即可运行代码。

在这里插入图片描述

我们运行代码 得到结果如下:

D:\you_names\venv\Scripts\python.exe D:/you_names/第一课学习.py
<Response [200]>Process finished with exit code 0

我们看到了服务器,给我们反馈了一个 <Response [200]>

Response : 美 [rɪˈspɑːns] 翻译:回答,答复;反应;响应;
200 :这个是HTTP状态码,表示成功的意思。

状态码解释如下:

200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

从服务器反馈给我们的信息看,就表示 请求成功。

用 requests ,打印输出获取到的请求信息:

在 requests 中可以 调用 .text 和 .content 来输出我们HTML 内容【重要】

requ . text :请求 html 代码内容以字符串形式输出。【重要】
requ . content: 请求 html 代码内容以 二进制形输出。需要解析才能打印出。【重要】

这里的 requ 等于是 requests.get(“https://www.csdn.net/”)
代码如下:

import requests
requ = requests.get("https://www.csdn.net/")
print(requ.text)

也可以这样写:

#encoding:utf-8
import requests
requ = requests.get("https://www.csdn.net/").text
print(requ)

代码整体思路:

前期工具库的导入准备:

1.安装 requests 库,功能:用来请求网站。

2.导入requests

包安装和导入好之后,我们就需要利用 这些 包 来达到我们的目的:

1.请求网站 得到服务器成功的回应 :requ = requests.get(“https://www.csdn.net/”)

2.用 请求得到的回应,打印出内容 :print(requ.text)

本次的 requets 就学到这里啦,如果大家有什么不懂的,可以在评论下留言,我会一一为大家解答。

喜欢的可以点个订阅哟

这篇关于第6课:学习用 requests 请求网站,并得到网站数据【免订阅版】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090666

相关文章

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

SpringBoot整合Canal+RabbitMQ监听数据变更详解

《SpringBoot整合Canal+RabbitMQ监听数据变更详解》在现代分布式系统中,实时获取数据库的变更信息是一个常见的需求,本文将介绍SpringBoot如何通过整合Canal和Rabbit... 目录需求步骤环境搭建整合SpringBoot与Canal实现客户端Canal整合RabbitMQSp

SpringBoot中Get请求和POST请求接收参数示例详解

《SpringBoot中Get请求和POST请求接收参数示例详解》文章详细介绍了SpringBoot中Get请求和POST请求的参数接收方式,包括方法形参接收参数、实体类接收参数、HttpServle... 目录1、Get请求1.1 方法形参接收参数 这种方式一般适用参数比较少的情况,并且前后端参数名称必须

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

Nacos集群数据同步方式

《Nacos集群数据同步方式》文章主要介绍了Nacos集群中服务注册信息的同步机制,涉及到负责节点和非负责节点之间的数据同步过程,以及DistroProtocol协议在同步中的应用... 目录引言负责节点(发起同步)DistroProtocolDistroSyncChangeTask获取同步数据getDis