第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

相关文章

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程