建筑兔零基础自学记录69|爬虫Requests-2

Requests库初步尝试

#导入requests库
import requests
#requests.get读取百度网页
r=requests.get('http://www.baidu.com')
#输出读取网页状态
print(r.status_code)
#输出网页源代码
print(r.text)

HTTP 状态码是三位数字,用于表示 HTTP 请求的结果。常见的状态码有:

  • 200:表示请求成功。
  • 404:表示请求的资源不存在。
  • 500:表示服务器内部出错。

所以只有200是成功,其他都是失败!

运行代码看到200成功读取网页,并解读了网页源代码

一、Requests库主要七个方法

 

1、 requests.get('http://www.baidu.com')

这就是刚开始我们获取百度网页的方法,非常常用。

注意这里的网址是要http开头的,如果只有www则会报错

#输出r对象的类型,即requests.models.Response
print(type(r))
#输出HTTP 头部信息
print(r.headers)

2、六个方法之间关系

3、PATCHPUT区别

  假设URL位置有一组数据UserInfo,包括UserID、UserName等20个字段

需求:用户修改了UserName,其他不变

  • 采用PATCH,仅向URL提交UserName的局部更新请求(局部改)
  • 采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除(整体改)

PATCH的最主要好处:节省网络带宽

二、Response对象的属性

 让我们来解读一下网页的编码方式:

import requests
r=requests.get('https://www.sina.com.cn/')
print(r.status_code)
print(r.text)
#输出网页header中得出的编码方式
print(r.encoding)
#输出网页内容中分析得出的编码方式
print(r.apparent_encoding)

可以看到解析内容看不懂

r.encoding得出新浪的编码方式 ISO-8859-1
r.apparent_encoding分析出新浪推测的编码方式utf-8

在中文网页中只有utf-8才能读出内容

当我们在代码中添加r.encoding = 'utf-8' 才可以解读出网页内容

 

三、Response库可能发生的异常

 

四、★★★爬取网页的通用代码框架

这是一个通用的代码:

import requestsdef getHTMLText(url):try:r=requests.get(url,timeout=30)r.raise_for_status()    #如果状态不是200,引发HTTPError异常r.encoding=r.apparent_encodingreturn r.textexcept:return "产生异常"if __name__=='__main__':url='https://www.sina.com.cn/'print(getHTMLText(url))

运行代码可得

如果在网站中删除http则会报错

 

五、HTTP协议

HTTP是一个基于“请求与响应”模式的、无状态的应用层协议

HTTP协议采用URL作为定位网络资源的标识,URL格式如下:

http://host[:port][path]

  • host: 合法的Internet主机域名或IP地址
  • port: 端口号,缺省端口为80
  • path: 请求资源的路径

URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

六、总结

  • r.status_code:200是成功
  • requests.get('http://www.baidu.com')
  • PATCH局部更新   /  PUT全局更新
  • r.encoding得出编码方式
  • r.apparent_encoding推测编码方式
  • 添加r.encoding = 'utf-8' 才可以解读出网页内容
  • 爬虫通用代码框架:

import requests

def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()    #如果状态不是200,引发HTTPError异常
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return "产生异常"

if __name__=='__main__':
    url='https://www.sina.com.cn/'
    print(getHTMLText(url))

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

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

相关文章

Web测试流程及注意点

在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。 重要的是&…

基于MATLAB/simulink的信号调制仿真--AM调制

实验内容: 假设y(t)(20.5*2cos(2*pi*1000*t))*5cos(2*pi*2*1e4*t)调幅系统,请将一个频率为1000HZ的余弦波信号,通过进行AM调制,载波信号频率为20kHZ的余弦波,调制度ma0.…

通信协议详解(十):PSI5 —— 汽车安全传感器的“抗干扰狙击手”

一、PSI5是什么? 一句话秒懂 PSI5就像传感器界的“防弹信使”:在汽车安全系统(如气囊)中,用两根线同时完成供电数据传输,即便车祸时线路受损,仍能确保关键信号准确送达! 基础概念…

数据结构与算法-图论-复习1(单源最短路,全源最短路,最小生成树)

1. 单源最短路 单一边权 BFS 原理:由于边权为单一值,可使用广度优先搜索(BFS)来求解最短路。BFS 会逐层扩展节点,由于边权相同,第一次到达某个节点时的路径长度就是最短路径长度。 用法:适用…

【WRF理论第十七期】单向/双向嵌套机制(含namelist.input详细介绍)

WRF运行的单向/双向嵌套机制 准备工作:WRF运行的基本流程namelist.input的详细设置&time_control 设置&domain 嵌套结构&bdy_control 配置部分 namelist 其他注意事项Registry.EM 运行 ARW 嵌套双向嵌套(two-way nesting)单向嵌套…

怎么查看苹果手机和ipad的设备信息和ios udid

你知道吗?我们每天使用的iPhone和iPad,其实隐藏着大量详细的硬件与系统信息。除了常见的系统版本和序列号外,甚至连电池序列号、摄像头序列号、销售地区、芯片型号等信息,也都可以轻松查到! 如果你是开发者、维修工程…

matlab内置的git软件版本管理功能

1、matlab多人协作开发比普通的嵌入式软件开发困难很多 用过matlab的人都知道,版本管理对于matlab来说真的很费劲,今天介绍的这个工具也不是说它就解决了这个痛点,只是让它变得简单一点。版本管理肯定是不可或缺的,干就完了 2、…

vscode集成deepseek实现辅助编程(银河麒麟系统)【详细自用版】

针对开发者用户,可在Visual Studio Code中接入DeepSeek,实现辅助编程。 可参考我往期文章在银河麒麟系统环境下部署DeepSeek:基于银河麒麟桌面&&服务器操作系统的 DeepSeek本地化部署方法【详细自用版】 一、前期准备 &#xff08…

Java 大厂面试题 -- JVM 深度剖析:解锁大厂 Offe 的核心密钥

最近佳作推荐: Java大厂面试高频考点|分布式系统JVM优化实战全解析(附真题)(New) Java大厂面试题 – JVM 优化进阶之路:从原理到实战的深度剖析(2)(New&#…

数据库实践题目:在线书店管理系统

完整的数据库实践题目:在线书店管理系统 数据库表结构及示例数据 书籍表(books) CREATE TABLE books ( book_id INT PRIMARY KEY, title VARCHAR(100) NOT NULL, author VARCHAR(50) NOT NULL, publisher VARCHAR(50), publish_year INT, category VARCHAR(30), …

Linux 入门指令(1)

(1)ls指令 ls -l可以缩写成 ll 同时一个ls可以加多个后缀 比如 ll -at (2)pwd指令 (3)cd指令 cd .是当前目录 (4)touch指令 (5)mkdir指令 (6)rmdir和rm…

图灵逆向——题七-千山鸟飞绝

目录列表 过程分析headers头部M参数分析载荷x参数分析响应数据解密分析 代码实现 一进来还是一个无限debugger,前面有讲怎么过,这里直接过掉~ 老规矩,养成习惯,先看请求头里有没有加密参数发现好像是有个M,它是个32位…

上门预约洗鞋店小程序都具备哪些功能?

现在大家对洗鞋子的清洗条件越来越高,在家里不想去,那就要拿去洗鞋店去洗。如果有的客户没时间去洗鞋店,这个时候,有个洗鞋店小程序就可以进行上门取件,帮助没时间的客户去取需要清洗的鞋子,这样岂不是既帮…

Node.js EventEmitter 深入解析

Node.js EventEmitter 深入解析 概述 Node.js 作为一种强大的 JavaScript 运行环境,以其异步、事件驱动特性在服务器端编程中占据了重要地位。EventEmitter 是 Node.js 中处理事件的一种机制,它允许对象(称为“发射器”)发出事件…

C++11QT复习 (十九)

文章目录 Day13 C 时间库和线程库学习笔记&#xff08;Chrono 与 Thread&#xff09;一、时间库 <chrono>1.1 基本概念1.2 使用示例1.3 duration 字面量单位 二、线程库 <thread>2.1 基本用法2.2 数据竞争&#xff08;Race Condition&#xff09;2.3 加锁&#xff…

C++初阶-C++的讲解1

目录 1.缺省(sheng)参数 2.函数重载 3.引用 3.1引用的概念和定义 3.2引用的特性 3.3引用的使用 3.4const引用 3.5.指针和引用的关系 4.nullptr 5.总结 1.缺省(sheng)参数 &#xff08;1&#xff09;缺省参数是声明或定义是为函数的参数指定一个缺省值。在调用该函数是…

Redisson 实现分布式锁

在平常的开发工作中&#xff0c;我们经常会用到锁&#xff0c;那么锁有什么用呢&#xff1f;锁主要是控制对共享资源的访问顺序&#xff0c;防止多个线程并发操作导致数据不一致的问题。经常可能会听到乐观锁、悲观锁、分布式锁、行锁、表锁等等&#xff0c;那么我们今天总结下…

环境—Ubuntu24(py3.12)安装streamlit(虚拟环境py3.9)

请尽可能不用Ubuntu24请直接跳7.查看解决方案 Action Log 在Ubuntu 24.04中更换为清华源的步骤【Bug】Python 3.12 on Ubuntu 24.04 is Externally Managed - PIP is broken 相关解决方案 从 Ubuntu 24.04 开始&#xff0c;有两个选项&#xff1a; 1. install python pacakg…

【C++进阶】关联容器:set类型

目录 一、set 基本概念 1.1 定义与特点 1.2 头文件与声明 1.3 核心特性解析 二、set 底层实现 2.1 红黑树简介 2.2 红黑树在 set 中的应用 三、set 常用操作 3.1 插入元素 3.2 删除元素 3.3 查找元素 3.4 遍历元素 3.5 性能特征 四、set 高级应用 4.1 自定义比较…

[漏洞篇]SSRF漏洞详解

[漏洞篇]SSRF漏洞详解 免责声明&#xff1a; 本文主要讲解漏洞原理&#xff0c;以及防御手段&#xff0c;旨在帮助大家更好的了解漏洞危害&#xff0c;以及开发中所需要的点&#xff0c;切勿拿来做违法事情&#xff0c;否则后果自负。 一、介绍 概念 SSRF&#xff1a;服务端请…