当前位置: 首页 > news >正文

python23-常用的第三方库01:request模块-爬虫

requests 模块是 Python 中的一个第三方库,用于发送 HTTP 请求

它提供了一个简单且直观的 API,使得发送网络请求和解析响应变得非常容易。requests 模块支持各种 HTTP 方法,如 GET、POST、PUT、DELETE 等,并且具有处理 cookies、会话(sessions)、重定向、HTTP 头等高级功能。 

示例1:发送 GET 请求

import requestsresponse = requests.get('https://api.example.com/data')# 检查响应状态码
print(response.status_code)# 获取响应内容(文本格式)
print(response.text)# 获取响应内容(JSON 格式,如果服务器返回的是 JSON)
# 注意:这里会抛出异常如果响应内容不是有效的 JSON
try:json_data = response.json()print(json_data)
except ValueError:print("Response content is not JSON!")

示例2:发送 POST 请求

import requestsurl = 'https://api.example.com/submit'
data = {'key1': 'value1', 'key2': 'value2'}response = requests.post(url, data=data)# 检查响应状态码
print(response.status_code)# 获取响应内容
print(response.text)

示例3:处理 HTTP 头

import requestsurl = 'https://api.example.com/data'
headers = {'Authorization': 'Bearer YOUR_ACCESS_TOKEN','Content-Type': 'application/json'
}response = requests.get(url, headers=headers)# 检查响应状态码
print(response.status_code)# 获取响应内容
print(response.text)

一、安装request模块

先检验当前python环境是否有requests模块:

pip show requests

安装requests模块并检验:

二、requests模块爬取网页信息

import re
import requestsresponse = requests.get('https://www.weather.com.cn/html/weather/101191201.shtml')
# 设置编码格式
response.encoding = 'utf-8'
print(response.text)print('*'*40)
# 正则表达式模式
city_pattern = r'<span class="name"><a\s+[^>]*>(.*?)<\/a>'
weather_pattern = r'<span class="weather"><a[^>]*>(.*?)</a></span>'
wd_pattern = r'<li>.*?<span class="wd">(.*?)</span>.*?</li>'
# <span class="zs">适宜</span>
zs_pattern = r'<li>.*?<span class="zs">(.*?)</span>.*?</li>'
# 搜索匹配项
citys = re.findall(city_pattern, response.text)
print(citys)
weathers = re.findall(weather_pattern, response.text)
print(weathers)
wd_s = re.findall(wd_pattern, response.text)
print(wd_s)
zs_s = re.findall(zs_pattern, response.text)
print(zs_s)

【注意】:

        在 Python 的正则表达式中,前缀 r 表示原始字符串(raw string)。当你使用原始字符串时,字符串中的转义字符不会被处理。这在编写正则表达式时非常有用,因为正则表达式本身使用了大量的反斜杠(\),而在普通的 Python 字符串中,反斜杠是一个转义字符。

三、requests模块爬取网页中的图片并下载到本地

3-1、open函数

open 函数是 Python 中用于打开文件的内置函数。

它返回一个文件对象,该对象具有读、写或追加文件的方法。

使用 open 函数时,必须指定文件名,并且可以选择性地指定打开文件的模式、编码等。

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file:要打开的文件或目录的路径。如果是相对路径,则是相对于当前工作目录;如果是绝对路径,则是从文件系统的根目录开始的完整路径。(或者是在写模式下的保存的本地文件的文件名)
  • mode:可选参数,指定文件的打开模式。默认为 'r',表示只读模式。其他模式包括 'w'(写模式,会覆盖文件)、'a'(追加模式,在文件末尾添加内容)、'b'(二进制模式,用于非文本文件)、'+'(更新模式,允许读写)等。这些模式可以组合使用,如 'rb' 表示以二进制方式只读打开文件。
  • buffering:可选参数,设置缓冲策略。默认为 -1,表示使用默认的系统缓冲策略。0 表示不缓冲(只适用于二进制模式),1 表示行缓冲(只在文本模式下有效),其他正整数表示缓冲区大小(以字节为单位)。
  • encoding:可选参数,指定文件的字符编码。默认为 None,表示使用系统默认编码。对于文本文件,建议使用如 'utf-8' 的明确编码。
  • errors:可选参数,指定如何处理编码和解码错误。默认为 None,表示使用系统的默认错误处理策略。其他选项包括 'strict'(遇到错误时引发异常)、'ignore'(忽略错误)等。
  • newline:可选参数,控制换行符的处理。默认为 None,表示使用系统默认的方式处理换行符。其他选项包括 ''(空字符串,表示将换行符转换为 \n)、'\n'(表示使用 Unix 风格的换行符)、'\r\n'(表示使用 Windows 风格的换行符)等。
  • closefd:可选参数,如果为 True(默认值),则当文件对象被关闭时,底层的文件描述符也会被关闭。如果为 False,则文件描述符不会被关闭,这在某些需要保留文件描述符的场合很有用。
  • opener:可选参数,一个可调用对象,用于打开文件。默认为 None,表示使用内置的 os.open() 函数。这个参数通常不常用,但在需要自定义文件打开行为时很有用。

示例:

1、以只读模式打开文本文件

2、以写模式打开文本文件

使用 with 语句打开文件可以确保文件在使用完毕后被正确关闭,即使在读取或写入文件时发生异常也能保证这一点。

相关文章:

python23-常用的第三方库01:request模块-爬虫

requests 模块是 Python 中的一个第三方库&#xff0c;用于发送 HTTP 请求。 它提供了一个简单且直观的 API&#xff0c;使得发送网络请求和解析响应变得非常容易。requests 模块支持各种 HTTP 方法&#xff0c;如 GET、POST、PUT、DELETE 等&#xff0c;并且具有处理 cookies…...

CAT3D: Create Anything in 3D with Multi-View Diffusion Models 论文解读

24年5月的论文&#xff0c;上一版就是ReconFusion 目录 一、概述 二、相关工作 1、2D先验 2、相机条件下的2D先验 3、多视角先验 4、视频先验 5、前馈方法 三、Method 1、多视角扩散模型 2、新视角生成 3、3D重建 一、概述 该论文提出一种CAT3D方法&#xff0c;实现…...

持续学习入门

参考视频&#xff08;一&#xff09; 【学无止境&#xff1a;深度连续学习】 背景 更新新的数据时&#xff0c;数据异步输入&#xff0c;会有灾难性遗忘 现有解决策略 &#xff08;1&#xff09;引入正则约束&#xff08;2&#xff09;设计合适的动态模型架构 &#xff…...

天猫推荐数据集实践

参考自 https://github.com/xufengtt/recom_teach_code&#xff0c;学习记录。 环境配置&#xff08;maxcomputedataworks&#xff09; 下载天猫推荐数据集&#xff1b;开启 aliyun 的 maxcompute&#xff0c;dataworks&#xff0c;pai&#xff1b;使用 odpscmd 上传本地数据…...

《Vue3实战教程》33:Vue3路由

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 路由​ 客户端 vs. 服务端路由​ 服务端路由指的是服务器根据用户访问的 URL 路径返回不同的响应结果。当我们在一个传统的服务端渲染的 web 应用中点击一个链接时&#xff0c;浏览器会从服务端获得全新的 HTML&…...

【大模型系列】MultiUI(2024.11)

Paper&#xff1a;https://arxiv.org/pdf/2410.13824Github&#xff1a;https://neulab.github.io/MultiUI/Author&#xff1a;Junpeng Liu et al., 卡内基梅隆 核心1&#xff1a; 先基于text-based LLMs获取网页的accessibility tree(辅助功能树&#xff0c;https://200t.w3c…...

「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统

本篇教程将实现一个模拟火车票查询系统&#xff0c;通过输入条件筛选车次信息&#xff0c;并展示动态筛选结果&#xff0c;学习事件处理、状态管理和界面展示的综合开发技巧。 关键词 条件筛选动态数据展示状态管理UI交互查询系统 一、功能说明 模拟火车票查询系统包含以下功…...

Dubbo 核心知识全解析:原理、流程与关键机制

1.说说一次 Dubbo 服务请求流程&#xff1f; Dubbo 是一个分布式服务框架&#xff0c;它简化了基于 SOA&#xff08;面向服务架构&#xff09;的应用程序的开发。一次典型的 Dubbo 服务请求流程如下&#xff1a; 服务提供者启动: 服务提供者启动后&#xff0c;会向注册中心注册…...

时间序列预测算法---LSTM

目录 一、前言1.1、深度学习时间序列一般是几维数据&#xff1f;每个维度的名字是什么&#xff1f;通常代表什么含义&#xff1f;1.2、为什么机器学习/深度学习算法无法处理时间序列数据?1.3、RNN(循环神经网络)处理时间序列数据的思路&#xff1f;1.4、RNN存在哪些问题? 二、…...

二十三种设计模式-建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种分步骤构建复杂对象的方法。这种模式允许你通过相同的创建过程构建不同的表示。建造者模式将一个复杂对象的构建与其表示分离&#xff0c;使得同样的构建过程可以创建不同的对象…...

MarkDown 的 mermaid gantt(甘特图)、mermaid sequenceDiagram (流程图) 语法解析和应用

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 MarkDown 的 mermaid gantt、mermaid sequenceDiagram 语法解析和应用前言mermaid gan…...

git submodule的使用:将别人的git仓库作为自己的子仓库

git的基本操作在该篇中展示&#xff1a;git的基本操作在日常开发中&#xff0c;我们经常会碰到需要将别人的仓库作为自己的子仓库来进行开发。下面将介绍具体将如何操作。 1、添加Submodule至自己的git仓库 1.1、创建自己的Git仓库 &#xff08;1&#xff09;在github中创建自…...

Springboot 下载附件

GetMapping("/download") public void download(RequestParam String fileId, HttpServletResponse response) throws IOException {// 查询文件信息SysFileEntity sysFileEntity fileService.queryFileById(fileId);response.setContentType("application/oct…...

MySQL 延迟复制:确保数据安全与系统稳定的秘诀

MySQL 延迟复制&#xff1a;确保数据安全与系统稳定的秘诀 在 MySQL 主从复制架构中&#xff0c;数据的同步通常是实时的。然而&#xff0c;在一些特定场景下&#xff0c;我们可能不希望从库立刻同步主库的所有更新。特别是在高风险操作或者主库出现故障时&#xff0c;实时复制…...

ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana

前言 你知道对于一个系统的上线考察&#xff0c;必备的几样东西是什么吗&#xff1f;其实这也是面试中考察求职者&#xff0c;是否真的做过系统开发和上线的必备问题。包括&#xff1a;服务治理(熔断/限流) (opens new window)、监控 (opens new window)和日志&#xff0c;如果…...

python实现自动登录12306抢票 -- selenium

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 python实现自动登录12306抢票 -- selenium 前言其实网上也出现了很多12306的代码&#xff0c;但是都不是最新的&#xff0c;我也是从网上找别人的帖子&#xff0c;看B站视频&…...

使用Diffusion Models进行图像超分辩重建

Diffusion Models专栏文章汇总:入门与实战 前言:图像超分辨率重建是一个经典CV任务,其实LR(低分辨率)和 HR(高分辨率)图像仅在高频细节上存在差异。通过添加适当的噪声,LR 图像将变得与其 HR 对应图像无法区分。这篇博客介绍一种方式巧妙利用这个规律使用Diffusion Mod…...

吾杯网络安全技能大赛——Misc方向WP

吾杯网络安全技能大赛——Misc方向WP Sign 题目介绍: 浅浅签个到吧 解题过程&#xff1a; 57754375707B64663335376434372D333163622D343261382D616130632D3634333036333464646634617D 直接使用赛博橱子秒了 flag为 WuCup{df357d47-31cb-42a8-aa0c-6430634ddf4a} 原神启动…...

Web安全 - “Referrer Policy“ Security 头值不安全

文章目录 概述原因分析风险说明Referrer-Policy 头配置选项1. 不安全的策略no-referrer-when-downgradeunsafe-url 2. 安全的策略no-referreroriginorigin-when-cross-originsame-originstrict-originstrict-origin-when-cross-origin 推荐配置Nginx 配置示例 在 Nginx 中配置 …...

C#OPC(上)

OPC(OLE for Process Control),用于过程控制的OLE&#xff0c;是一个工业标准&#xff0c;管理这个标准的国际组织是OPC基金会&#xff0c;OPC基金会现有会员以超过220家。遍布全球&#xff0c;包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统的公司。基于微软的O…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...