第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

相关文章

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名