Python网页处理与爬虫实战:使用Requests库进行网页数据抓取
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。
我是Srlua小谢,在这里我会分享我的知识和经验。🎥
希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮
记得先点赞👍后阅读哦~ 👏👏
📘📚 所属专栏:Python
欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙
目录
Python网页处理与爬虫实战:使用Requests库进行网页数据抓取
问题概述
Python与网页处理
安装requests 库
网页爬虫
拓展:Robots 排除协议
requests 库的使用
requests 库概述
requests 库中的网页请求函数
网页请求函数
Response 对象的属性
Response 对象的方法
获取一个网页内容
Python网页处理与爬虫实战:使用Requests库进行网页数据抓取
问题概述
Python 语言实现网络爬虫的问题引入
Python与网页处理
- Python 语言发展中有一个里程碑式的应用事件,即 美国谷歌( GOOGLE) 公司在搜索引擎后端采用 Python 语言进行链接处理和开发,这是该语言发展 成熟的重要标志。Python 语言的简洁性和脚本特点 非常适合链接和网页处理
- 万维网(WWW)的快速发展带来了大量获取和提 交网络信息的需求,这产生了“网络爬虫”等一系列 应用。
- Python 语言提供了很多类似的函数库,包括urllib 、urllib2、urllib3、wget、scrapy、requests 等。 这些库作用不同、使用方式不同、用户体验不同。
- 对于爬取回来的网页内容,可以通过re(正则表达 式)、beautifulsoup4等函数库来处理,随着该领 域各函数库的发展,本章将详细介绍其中最重要且最 主流的两个函数库:requests 和beautifulsoup4, 它们都是第三方库。
网络爬虫应用一般分为两个步骤:
(1)通过网络连接获取网页内容
(2)对获得的网页内容进行处理。
这两个步骤分别使用不同的函数库:requests 和 beautifulsoup4
安装requests 库
采用pip指令安装requests库,如果在Python2和Python3并存的系统中,采用pip3 指令 :\>pip install requests # 或者 pip3 install requests
采用pip或pip3指令安装beautifulsoup4库,注意,不要安装beautifulsoup库,后者由于年久失修 ,已经不再维护了 :\>pip install beautifulsoup4 # 或者 pip3 install beautifulsoup4
网页爬虫
使用Python语言实现网络爬虫和信息提交是非常简单的事情 ,代码行数很少,也无须知道网络通信等方面知识,非常适合 非专业读者使用。然而,肆意的爬取网络数据并不是文明现象 ,通过程序自动提交内容争取竞争性资源也不公平。就像那些 肆意的推销电话一样,他们无视接听者意愿,不仅令人讨厌也 有可能引发法律纠纷。
拓展:Robots 排除协议
Robots 排除协议(Robots Exclusion Protocol),也被称为爬虫协议,它是 网站管理者表达是否希望爬虫自动获取网络信息意愿的方法。管理者可以在网 站根目录放置一个robots.txt 文件,并在文件中列出哪些链接不允许爬虫爬取 。一般搜索引擎的爬虫会首先捕获这个文件,并根据文件要求爬取网站内容。
Robots 排除协议重点约定不希望爬虫获取的内容,如果没有该文件则表示网 站内容可以被爬虫获得,然而,Robots 协议不是命令和强制手段,只是国际 互联网的一种通用道德规范。绝大部分成熟的搜索引擎爬虫都会遵循这个协议 ,建议个人也能按照互联网规范要求合理使用爬虫技术。
——君子协议——
requests 库的使用
requests 库是一个简洁且简单的处理HTTP请求的第三方库。
requests 库概述
requests 的最大优点是程序编写过程更接近正常 URL 访问过程。
- 这个库建立在Python语言的urllib3库基础上,类似这种在其他函数库之上再封装功能提供更友好函数的方式在Python语言中十分常见。在Python的生态圈里,任何人都有通过技术创新或体验创新发表意 见和展示才华的机会。
- request 库支持非常丰富的链接访问功能,包括:国际域名和 URL 获取、HTTP 长连接和连接缓存、HTTP 会话和Cookie 保 持、浏览器使用风格的SSL 验证、基本的摘要认证、有效的键 值对Cookie 记录、自动解压缩、自动内容解码、文件分块上传 、HTTP(S) 代理功能、连接超时处理、流数据下载等。
- 有关 requests 库的更多介绍请访问: http://docs.python‐requests.org
requests 库中的网页请求函数
get() 是获取网页最常用的方式 , 在调用requests.get()函数后,返回的网页内容会保存为一 个Response对象,其中,get()函数的参数url 必须 链接采用HTTP 或HTTPS方式访问
网页请求函数
和浏览器的交互过程一样,requests.get()代表请求 过程,它返回的Response 对象代表响应。返回内容 作为一个对象更便于操作,Response 对象的属性如 下表所示,需要采用<a>.<b>形式使用。
Response 对象的属性
- status_code 属性返回请求HTTP 后的状态,在处理数据之前要先判断状态情况,如果请求未被响应, 需要终止内容处理。
- text 属性是请求的页面内容,以字符串形式展示。
- encoding 属性非常重要,它给出了返回页面内容的编码方式,可以通过对encoding属性赋值更改编码 方式,以便于处理中文字符
- content 属性是页面内容的二进制形式
Response 对象的方法
- json() 方法能够在HTTP响应内容中解析存在的 JSON 数据,这将带来解析HTTP的便利。
- raise_for_status()方法能在非成功响应后产生异常,即只要返 回的请求状态status_code 不是200,这个方法会产生一个异 常,用于try…except 语句。使用异常处理语句可以避免设置一 堆复杂的if 语句,只需要在收到响应调用这个方法,就可以避 开状态字200 以外的各种意外情况。
- requests 会产生几种常用异常。当遇到网络问题时,如: DNS查询失败 、 拒绝连接等 , requests 会 抛 出 ConnectionError 异常;遇到无效HTTP 响应时,requests 则 会抛出HTTPError 异常;若请求url 超时,则抛出Timeout 异 常; 若请求超过了设定的最大重定向次数, 则会抛出一个 TooManyRedirects 异常
获取一个网页内容
实战示例:
Python爬虫项目实战案例-批量下载网易云榜单音乐保存至本地_python爬取制定名称歌曲并下载-CSDN博客
希望对你有帮助!加油!
若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!
相关文章:

Python网页处理与爬虫实战:使用Requests库进行网页数据抓取
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

HOW - vscode 使用指南
目录 一、基本介绍1. 安装 VS Code2. 界面介绍3. 扩展和插件4. 设置和自定义 二、常用界面功能和快捷操作(重点)常用界面功能快捷操作 三、资源和支持 Visual Studio Code(VS Code)是一款由微软开发的免费、开源的代码编辑器&…...

刚刚!《国家科学技术奖励条例》迎来最新修订
【SciencePub学术】《国务院关于修改〈国家科学技术奖励条例〉的决定》已经于2024年5月11日国务院第32次常务会议通过,现予公布: 国务院决定对《国家科学技术奖励条例》作如下修改: 一、将第二条修改为:“国家设立下列国家科学技术…...

MySQL -- SQL笔试题相关
1.银行代缴花费bank_bill 字段名描述serno流水号date交易日期accno账号name姓名amount金额brno缴费网点 serno: 一个 BIGINT UNSIGNED 类型的列,作为主键,且不为空。该列是自动增量的,每次插入新行时,都会自动递增生成一个唯一的…...

VB6 MQTT为什么在物联网应用中使用 MQTT 而不是 HTTP?
有需要VBA,VB6,VB.NET等方面的MQTT的可以找我 一、MQTT简介 MQTT被广泛用于物联网(IoT:Internet of Things)领域,其中大量的设备需要进行实时通信和数据交换。它采用了一种发布/订阅(publish/subscribe)模型,其中消息的发送者(发布者&#…...

软设之希尔排序
假设有n个元素,先取一个小于n的整数d1作为一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组中进行直接插入排序;然后,取第二个增量d2<d1重复上诉的分组和排序,直到所取得增量dt1&#…...

WPF Binding对象
在WinForm中,我们要想对控件赋值,需要在后台代码中拿到控件对象进行操作,这种赋值形式,从根本上是无法实现界面与逻辑分离的。 在WPF中,微软引入了Binding对象,通过Binding,我们可以直接将控件与…...

Educational Codeforces Round 127 D. Insert a Progression
Insert a Progression time limit per test: 2 second memory limit per test: 256 megabytes input: standard input output: standard output You are given a sequence of n n n integers a 1 , a 2 , … , a n a_1, a_2, \dots, a_n a1,a2,…,an. You are also giv…...

树莓集团:构筑全国数字影像生态链
在数字化浪潮席卷全球的今天,数字影像技术正以前所未有的速度改变着我们的生活。成都树莓集团以远见卓识和坚定步伐,专注于全国数字影像生态链的建设,不断推动着文创产业的创新与发展。 树莓集团致力于打造一个完整的数字影像生态链ÿ…...

物联网——TIM定时器、PWM驱动呼吸灯、舵机和直流电机
定时器概念(常用于输出PWM波形,驱动电机) 时间脉冲数时钟周期; 这里的脉冲数6553665536,支持定时器级联,从而延长定时 定时器类型 基本定时器原理图(UI:更新中断, U:更新事件&#…...

Elasticsearch 认证模拟题 -2
一、题目 有一个索引 task3,其中有 fielda,fieldb,fieldc,fielde 现要求对 task3 重建索引,重建后的索引新增一个字段 fieldg 其值是fielda,fieldb,fieldc,fielde 的值拼接而成。 …...

Java-----Comparable接口和Comparator接口
在Java中,我们会经常使用到自定义类,那我们如何进行自定义类的比较呢? 1.Comparable接口 普通数据的比较 int a10;int b91;System.out.println(a<b); 那自定义类型可不可以这样比较呢?看一下代码 我们发现会报错,因为自定义…...

通信技术体会
比如 pcie可以看成是全连接的ahb bus,但又不是。 因为pcie还是axi(神似split/cutthrough)。(axi更多是接口而不是bus)。 pcie虽然物理层和usb都是serdes,但transaction layer就是上面这样的,也就…...

Linux系统安全及其应用
文章目录 一、用户账号安全管理1.1 系统账号的清理1.2 对用户账号的操作1.2.1 锁定和解锁用户1.2.2 删除无用账号 1.3 对重要文件进行锁定1.4 密码安全控制1.4.1 新建用户1.4.2 已有用户 二、历史命令管理2.1 历史命令限制2.2 自动清空历史命令 三、设置终端登录的安全管理3.1 …...

JVM内存划分类加载的过程双亲委派模型的详解
JVM内存划分 JVM也就是java进程,这个进程一旦跑起来就会从操作系统这里申请一大块内存空间,JVM接下来就要进一步的对这个大的空间进行划分,划分成不同区域,从而每个区域都有不同的功能作用,一共分为如下几个区域 1.堆…...

Java异常详解
Java异常详解 前言一、异常类的定义Java异常异常类的构成Java常见运行错误异常示例除以 0数组下标越界访问 null 对象 防御式编程异常的好处LBYL 风格的代码EAFP 风格的代码 二、异常的基本用法捕获异常基本语法代码示例不处理异常使用 try catch 后的程序执行过程catch 只能处…...

C++入门3——类与对象2(类的6个默认成员函数)
目录 1.类的6个默认成员函数 2. 构造函数 2.1 构造函数的概念 2.2 构造函数的特性 3. 析构函数 3.1 析构函数的概念 3.2 析构函数的特性 4.拷贝构造函数 4.1 拷贝构造函数的概念 4.2 拷贝构造函数的特性 5.赋值运算符重载函数 5.1运算符重载函数 5.2 赋值运算符重…...

CobaltStrike基本渗透
目录 CobaltStrike简介 主要功能: 使用注意: 在使用CobaltStrike进行渗透测试时,务必遵守法律法规,并获得合法授权。 CobaltStrike安装 前提 安装 服务端安装 windows安装 CS基本使用 监听器配置 一些基本的攻击…...

【linux深入剖析】进程间通信
🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1.进程间通信目的2. 什么…...

关系数据库:关系模式
文章目录 基本概述关系的相关名词术语笛卡儿积与关系关系的类型 关系模式总结 基本概述 关系的相关名词术语 关系:简单来说,就是一张二维表格。属性(Attribute):也称字段或列,在现实世界中,要描述一个事务常常取若干…...

医学图像处理质量的评价方法
评判处理后医学图像的质量是确保图像处理技术有效性和可靠性的关键。以下是一些常用的图像质量评估方法和指标: 1. 主观评估 主观评估是由专业人员(如放射科医生)通过视觉检查对图像质量进行评分。常用的主观评估方法包括: 视觉…...

Ehcache Java 缓存框架
详解 下图是 Ehcache 在应用程序中的位置: Ecache 是一个广泛使用的 Java 缓存框架,能够有效提升应用性能,并减少与后端数据库的交互次数。它采用了一系列高级缓存策略,包括内存缓存、磁盘缓存、分布式缓存等,并提供了…...

详解Spring IoCDI(二)
目录 承接上文:详解Spring IoC&DI (一) 1.IoC详解 1.1方法注解Bean 1.2方法注解要配合类注解使用 1.3定义多个对象 1.4重命名Bean 1.5扫描路径 2.DI详解 2.1DI与IoC的关系 2.2属性注入 2.3构造方法注入 2.4Setter注入 2.5 三…...

说明白计算机网络之TCP的流量控制与拥塞控制之慢开始算法与拥塞避免算法
TCP的流量控制 利用滑动窗口实现流量控制 设A向B发送数据,连接建立时候,B告诉A自身的接收窗口大小,A的发送窗口大小不能超过接收方B的窗口大小 流量控制:发送方发送速率不要太快,要让接收方来得及接收。窗口大小的单…...

这款信创FTP软件,可实现安全稳定的文件传输
信创,即信息技术应用创新,2018年以来,受“华为、中兴事件”影响,国家将信创产业纳入国家战略,并提出了“28n”发展体系。“8”具体指金融、石油、电力、电信、交通、航空航天、医院、教育等主要行业。目前企业使用比较…...

代码随想录算法训练营第十天|232.用栈实现队列、225. 用队列实现栈
232.用栈实现队列 题目链接:232. 用栈实现队列 文档讲解:代码随想录 状态:写出来 ,但差强人意 思路: 定义两个容器,可以是Stack,也可以是Deque,stackIn相当于临时容器,用来存放元素&…...

STM32 IIC协议
本文代码使用 HAL 库。 文章目录 前言一、什么是IIC协议二、IIC信号三、IIC协议的通讯时序1. 写操作2. 读操作 四、上拉电阻作用总结 前言 从这篇文章开始为大家介绍一些通信协议,包括 UART,SPI,IIC等。 UART串口通讯协议 SPI通信协议 一、…...

Java生成随机数的几种方式
随机数,在一些特殊场景下,是非常常用的。比如一些测试和验证场景、安全加密、随机抽样等都有随机数的‘身影’。 一、 使用java.util.Random类 java.util.Random类提供了更全面的随机数生成功能,包括随机整数、随机浮点数、随机布尔值等。 p…...

【面试】什么是Java虚拟机
目录 1. 说明2. 关键点 1. 说明 1.Java虚拟机(Java Virtual Machine,简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境。2.JVM是Java平台无关性的关键,它允许Java程序在任何支持JVM的硬件和操作系统上运…...

Go 语言的基本构成、要素与编写规范
Go 语言,作为由 Google 开发的现代编程语言,以其简洁、高效和并发编程能力而著称。在构建高性能分布式系统和现代软件开发中,Go 语言正日益受到欢迎。本篇文章将详细探讨 Go 语言程序结构的各个要素,包括函数定义、注释规范、数据…...