Requests请求库的使用

news2024/11/23 15:51:58

Request请求库

  • 爬虫运行原理
  • Requests请求库
    • 安装环境
  • Requests库的使用
    • 状态码
    • 网页内容

爬虫运行原理

首先回顾一下爬虫运作的基本原理(下面是比较正式的书面语):
爬虫是一种自动化程序,用于从互联网上获取信息,

  1. 发起请求:爬虫首先需要发起一个HTTP请求,向目标网站请求页面的内容。这个请求可以包含特定的参数、头部信息和身份验证等。
  2. 接收响应:目标网站接收到请求后,会返回一个HTTP响应。响应中包含了页面的内容和其他相关信息,比如状态码、头部信息等。
  3. 解析页面:爬虫接收到响应后,需要对页面进行解析,以提取所需的数据。常用的解析方法包括正则表达式、XPath、CSS选择器等。
  4. 提取数据:通过解析页面,爬虫可以提取出需要的数据。这些数据可以是文本、图片、链接等各种形式的信息。
  5. 存储数据:爬虫将提取到的数据存储到本地文件或数据库中,以备后续处理和分析使用。
  6. 处理下一页:在爬取单个页面的数据之后,爬虫可能需要处理下一页的数据。这通常涉及到翻页操作,可以通过模拟用户点击或修改URL参数等方式来获取下一页的内容。
  7. 重复操作:爬虫可以根据需要循环执行上述步骤,以获取更多的数据或不同页面的信息。

但是对于我们简单而言,就是我们看到的几乎都是图形化界面,但是爬虫可以返回页面对应的参数,这一部分是用代码进行表示,我们明面上看不到,比如状态码,页面携带的Cookie等等。爬虫模拟了我们用户去访问网页的这一过程。
在这里插入图片描述

Requests请求库

要访问网页,我们还需要相应的工具——Requests请求库。
Requests请求库是一个HTTP的请求库,我们可以通过这个Requests请求库对网站发起一个请求。

安装环境

在Pycharm里面进行库的安装,如果安装不成功,可以去找国内的镜像源,那样安装会比较顺利。
在这里插入图片描述

Requests库的使用

打开pycharm,新建文件,然后输入import requests,查看是否有报错:
在这里插入图片描述
接下来对Requests的简单语法进行一个了解:

在Python中,requests是一个流行的第三方库,用于发送HTTP请求。它提供了简单且人性化的接口,使得发送HTTP请求变得非常容易。以下是requests库的一些常见用法和语法:

  1. 发送GET请求:
import requests

response = requests.get(url)

其中,url是你要发送请求的目标URL。requests.get()方法会发送一个GET请求到指定的URL,并返回一个Response对象。

  1. 发送带参数的GET请求:
import requests

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.get(url, params=payload)

在上面的例子中,payload是一个包含参数的字典。requests.get()方法的params参数允许你将这些参数添加到请求的URL中。

因为GET请求的内容在链接中都看得到,举个例子,这里的payload指的就是:
在这里插入图片描述

  1. 发送POST请求:
import requests

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post(url, data=payload)

在这个例子中,payload是一个包含要发送的数据的字典。requests.post()方法将发送一个POST请求到指定的URL,并将payload作为请求的数据。这里与GET请求不同,这些参数在明面的链接中是看不到的。

  1. 处理响应:
import requests

response = requests.get(url)
print(response.status_code)  # 打印状态码
print(response.text)  # 打印响应内容

response.status_code是响应的状态码,用于判断请求是否成功。response.text是响应的内容,可以使用它来获取服务器返回的数据。

状态码

以百度为例:
在这里插入图片描述
这里是要访问的URL。
在这里插入图片描述
这里使用print(response.status_code)与print(response)结果一致。

查看返回结果:
在这里插入图片描述
返回码200,代表我们可以正常进行访问。

网页内容

接下来再对网页的内容进行获取,还是以百度为例:
这里使用response.text进行输出,可以看到页面的内容都输出出来了,但是还有部分是乱码的状态。从代码可以发现,网页的原始编码是使用的utf-8,所以我们保持与网页原始编码一致,也改成utf-8。
在这里插入图片描述

在这里插入图片描述
这个时候页面的内容就可以正常进行显示了。

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

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

相关文章

蓝牙耳机啥牌子好?发烧友力荐五大超高性价比蓝牙耳机

预算有限的情况下,性价比是我们在购物时的主要衡量维度,挑选蓝牙耳机时也不例外,那么你知道哪些蓝牙耳机性价比最高吗?不懂的话可以看看老烧我整理的超高性价比蓝牙耳机推荐,了解蓝牙耳机啥牌子好。 一、JEET Air 2 蓝…

数据结构总结4:树、二叉树

后续会有补充 树 树是一种非线性的数据结构,是由n(n>0)个有限结点组成一个具有层次关系的集合。 1.有一个特殊的结点,称为根结点,根节点没有前驱结点 2.树是递归定义的 满足树的条件: 1.子树不相交 2.除了根结点外&#xff0…

白盒测试:如何进行代码级别的测试?

01、什么是白盒测试 白盒测试也称结构测试,透明盒测试。主要用于单元测试阶段,代码和逻辑的测试,重点复杂的测试,是一种测试用例设计方法,不同于黑盒测试,白盒测试是可以看到内部代码如何运作的&#xff0…

PDF.js实现按需加载pdf文件-包含前后端开发源码和详细开发教程

PDF.js实现按需加载pdf文件 说明前言前端项目分片加载的效果前端项目结构项目运行与访问 后端项目项目结构核心代码实现注意事项 项目源码 说明 本文主要是介绍pdf.js的前后端项目的实现,包含可直接运行的源码。由于本人偏向于后端开发,因此前端的vue方…

学习C这么久了,main函数的这三个参数你见过吗?

文章目录 💐专栏导读💐文章导读🐧引例1🐧引例2 🐦认识环境变量🔔环境变量的概念🔔常见的环境变量🔔和环境变量相关的指令 🐦main函数的第三个参数🔔如何通过代…

Django SQL注入漏洞复现 (CVE-2022-28347)

漏洞简介 在Django 2.2 的 2.2.28 之前版本、3.2 的 3.2.13 之前版本和 4.0 的 4.0.4 之前版本中的 QuerySet.deexplain() 中发现了SQL注入问题。这是通过传递一个精心编制的字典(带有字典扩展)作为**options参数来实现的,并将注入负载放置在…

这个插件厉害!Tapdata 格式的 api 也可以导入了

Tapdata 是干嘛的,大家都知道的吧?我简单介绍一下 Tapdata 是自带 ETL 的实时数据服务平台,通过把企业核心数据实时集中到中央化数据平台的方式并通过 API 或者反向同步方式,为下游的交互式应用、微服务或交互式分析提供新鲜实时的…

js逆向-阿里系某688参数sign分析

声明 本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负! 如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦! 前言 目标网站:aHR0cHM6Ly93d3cuMTY4OC5jb20v 接…

html访问图片资源403问题

问题&#xff1a;图片403 页面不渲染 单独打开图片链接在浏览器却能正常查看 解决办法&#xff1a; 1.数据库中全局下载该字段链接&#xff0c;将图片存到制定文件夹&#xff0c;在系统内调用 2.检查页面head中的是否有此句“<metaname“referrer” content“no-referre…

网络模型及网络编程

名词解释 OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互联。 一般都叫OSI参考模型&#xff0c;是ISO&#xff08;国际标准化组织&#xff09;组织在1985年研究的网络互连模型。TCP(Transmission Control Protocol)&#xff0c;传送控制协议…

从永远到永远-ElasticSearch

ElasticSearch 1.概述2.入门1.官方地址2.RESTful3.倒排索引4.http请求操作1.索引操作2.document操作1.基本操作2.多条件查询3.区间查询4.完全匹配5.高亮显示6.聚合查询7.映射关系 5.JAVA API1.index操作2.doc操作1.基础操作2.批量操作3.复杂查询 1.概述 结构化数据、非结构化数…

C/C++函数指针和回调函数

一、函数指针 在讲回调函数之前&#xff0c;我们需要了解函数指针。 我们都知道&#xff0c;C语言的灵魂是指针&#xff0c;我们经常使用整型指针&#xff0c;字符串指针&#xff0c;结构体指针等 int *p1; char *p2; STRUCT *p3; //STRUCT为我们定义的结构体但是好像我们一…

springboot+jsp学生平时作业评价系统idea

课程信息管理功能需求主要是对课程信息的管理,包括课程信息的录入、维护、删除&#xff0c;教师可以根据授课计划设定授课进度。学生信息管理功能需求&#xff0c;主要是对学生的基本信息进行管理&#xff0c;教师可以录入学生信息&#xff0c;并可以对学生信息进行维护和删除。…

linux 串口改为固定

在/etc/udev/rules.d 目录下新建定义规则的文件 1. 文件名要按规范写否则改动无效2. 规则文件必须以.rules 结尾3. 规则文件名称必须遵循 xx-name.rules 格式&#xff08;xx 为数字或字母&#xff0c;name 为规则名称&#xff09;&#xff0c;例如 99-serial-ports.rules。4. 规…

PDM入门指南:一文带你了解PDM的基本知识

上一期&#xff0c;我们聊过PLM&#xff1b;这一期&#xff0c;我们接着聊聊PDM。在介绍之前&#xff0c;先回答之前客户提出的问题&#xff1a;上线PLM/PDM后&#xff0c;还需要e企拆图吗&#xff1f;可能需要&#xff0c;原因放在最后&#xff0c;有需要的朋友可直接跳到最后…

Java经典面试题—— 对比 Hashtable、HashMap、TreeMap 有什么不同?

典型回答 Hashtable、HashMap、TreeMap都是最常见的一些Map实现&#xff0c;是以键值对的形式存储和操作数据的容器类型。 Hashtable是早期Java类库提供的一个哈希表实现&#xff0c;本身是同步的&#xff0c;不支持null键和值&#xff0c;由于同步导致的性能开销&#xff0c…

IP 子网划分详解

文章目录 1 概述1.1 划分目的1.2 划分原则1.3 子网掩码 2 IP 子网划分示例3 网工软考真题3.1 判断网络号和主机号3.2 计算可容纳的主机数 1 概述 IP 子网划分&#xff1a;实际上就是设计 子网掩码 的过程。原因&#xff1a;由于在五类的IP地址中&#xff0c;网络号与主机号的的…

【dfs解决分组问题-两道例题——供佬学会!】(A元素是放在已经存在的组别中,还是再创建一个更好?--小孩子才做选择,dfs直接两种情况都试试)

问题关键就是&#xff1a; 一个点&#xff0c;可能 新开一个组 比 放到已经存在的组 更划算 因为后面的数据&#xff0c;我们遍历之前的点时&#xff0c;并不知道 所以我们应该针对每个点&#xff0c;都应该做出一个选择就是 新开一个元组或者放到之前的元组中&#xff0c;都尝…

SolVES 模型生态系统服务功能社会价值评估(基于多源环境QGIS、PostgreSQL、ArcGIS、Maxent、R语言)

查看原文>>>SolVES 模型生态系统服务功能社会价值评估&#xff08;基于多源环境QGIS、PostgreSQL、ArcGIS、Maxent、R语言&#xff09; 目录 第一章、理论基础与研究热点 第二章、SolVES 4.0 模型运行环境配置 第三章、SolVES 4.0 模型运行 第四章、数据获取与入…

简答题题集

简答题&#xff1a; 1.测试和开发如何配合工作&#xff0c;即测试何时介入测试工作&#xff1f; 测试工作应该覆盖需求分析、概要设计、详细设计、编码等前期阶段&#xff0c;而不应该在系统开发初步完成后才开始。 2.软件测试的对象&#xff1a;正确的依据应该是需求规格说明书…