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

news2025/1/7 1:25:58

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

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

示例1:发送 GET 请求

import requests

response = 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 requests

url = '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 requests

url = '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 requests

response = 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 语句打开文件可以确保文件在使用完毕后被正确关闭,即使在读取或写入文件时发生异常也能保证这一点。

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

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

相关文章

解释一下:运放的输入失调电流

输入失调电流 首先看基础部分:这就是同相比例放大器 按照理论计算,输入VIN=0时,输出VOUT应为0,对吧 仿真与理论差距较大,有200多毫伏的偏差,这就是输入偏置电流IBIAS引起的,接着看它的定义 同向和反向输入电流的平均值,也就是Ib1、Ib2求平均,即(Ib1+Ib2)/2 按照下面…

常规继承类对象大小

这个相对简单&#xff0c;只需要考虑类对象大小的累加和内存对齐 #include<iostream> using namespace std;class Base { public:int ma;int mb;char mc; };class Derive :public Base { public:int md; };class Derive2 :public Derive { public:int me; };int main() …

Scrum中敏捷项目经理(Scrum Master)扮演什么角色?

敏捷开发模式已经逐渐被主流的软件研发团队所接受&#xff0c;其中Scrum是最具代表性的敏捷方法之一。Scrum框架中有三个核心角色&#xff1a;Product Owner&#xff08;PO&#xff09;、Scrum Master&#xff08;SM&#xff09;和Development Team&#xff08;DT&#xff09;。…

[网络安全]数据安全领域关键技术总结

去标识计算技术 概念 去标识计算 (Differential Privacy) 是一种数据隐私保护技术&#xff0c;它可以在不暴露个人敏感信息的前提下进行统计分析&#xff0c;并保证对隐私的泄露控制在可承受的范围之内。 底层逻辑 基于差分隐私的去标识计算是指在计算处理中采用一些差分隐私…

手机租赁平台开发实用指南与市场趋势分析

内容概要 在当今快速变化的科技时代&#xff0c;手机租赁平台的发展如火如荼。随着越来越多的人希望使用最新款的智能手机&#xff0c;但又不愿意承担昂贵的购机成本&#xff0c;手机租赁平台应运而生。这种模式不仅为用户提供了灵活的选择&#xff0c;还为企业创造了新的商机…

【从零开始入门unity游戏开发之——C#篇42】C#补充知识——随机数(Random)、多种方法实现string字符串拼接、语句的简写

文章目录 一、随机数1、Random.Next()生成随机整数示例&#xff1a;生成一个随机整数生成指定范围内的随机整数 2、Random.NextSingle生成随机浮点数示例&#xff1a;生成随机浮点数 3、 生成随机字母或字符示例&#xff1a;生成随机字母示例&#xff1a;生成随机小写字母 二、…

overleaf写学术论文常用语法+注意事项+审阅修订

常用语法 导入常用的宏包 \usepackage{cite} \usepackage{amsmath,amssymb,amsfonts} \usepackage{algorithmic} \usepackage{algorithm} \usepackage{graphicx} \usepackage{subfigure} \usepackage{textcomp} \usepackage{xcolor} \usepackage{lettrine} \usepackage{booktab…

Rabbitmq追问1

如果消费端代码异常&#xff0c;未手动确认&#xff0c;那么这个消息去哪里 2024-12-31 21:19:12 如果消费端代码发生异常&#xff0c;未手动确认&#xff08;ACK&#xff09;的情况下&#xff0c;消息的处理行为取决于消息队列的实现和配置&#xff0c;以下是基于 RabbitMQ …

DeepSpeed训练得到checkpoint如何像Huggingface模型一样评测evaluation?zero_to_fp32.py有什么用?怎么用?

DeepSpeed训练得到checkpoint如何像Huggingface模型一样评测evaluation&#xff1f; 具体步骤 首先看一个样例&#xff1a; 这是我用open-instruct框架&#xff0c;使用DeepSpeed训练1728个steps得到的一个checkpoint。请注意&#xff0c;下文我演示用的例子是基于step_1152&…

游戏如何检测Root权限

Root权限&#xff0c;即超级用户权限&#xff0c;在Android系统中&#xff0c;获取Root权限意味着用户可以修改系统文件、移除预装应用、安装特殊应用等。 在Root环境下&#xff0c;游戏面临着相当大的安全隐患&#xff0c;用户获取了最高权限&#xff0c;意味着可以通过各类工…

【UE5 C++课程系列笔记】21——弱指针的简单使用

目录 概念 声明和初始化 转换为共享指针 打破循环引用 弱指针使用警告 概念 在UE C 中&#xff0c;弱指针&#xff08;TWeakPtr &#xff09;也是一种智能指针类型&#xff0c;主要用于解决循环引用问题以及在不需要强引用保证对象始终有效的场景下&#xff0c;提供一种可…

微信小程序中的 storage(本地存储)和内存是两个完全不同的存储区域

这是一个非常关键且容易混淆的概念 既然 this.globalData.appId appId 是将 appId 存储在内存中&#xff0c;为什么微信小程序中的 wx.getStorage 和 wx.setStorage&#xff08;本地存储&#xff09;中没有 appId&#xff0c;并且您提出了一个非常重要的疑问&#xff1a;stor…

DevSecOps自动化在安全关键型软件开发中的实践、Helix QAC Klocwork等SAST工具应用

DevSecOps自动化对于安全关键型软件开发至关重要。 那么&#xff0c;什么是DevSecOps自动化&#xff1f;具有哪些优势&#xff1f;为何助力安全关键型软件开发&#xff1f;让我们一起来深入了解~ 什么是DevSecOps自动化&#xff1f; DevSecOps自动化是指在软件开发生命周期的各…

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 数据准备&#x…

小程序学习06——uniapp组件常规引入和easycom引入语法

目录 一 组件注册 1.1 组件全局注册 1.2 组件全局引入 1.3 组件局部引入 页面引入组件方式 1.3.1 传统vue规范&#xff1a; 1.3.2 通过uni-app的easycom 二 组件的类型 2.1 基础组件列表 一 组件注册 1.1 组件全局注册 &#xff08;a&#xff09;新建compoents文件…

股市学习 seekingalpha tradingview

EMA EMA&#xff08;Exponential Moving Average&#xff09;是一种技术分析中常用的指标&#xff0c;用于平滑股价或其他资产价格的波动&#xff0c;以帮助分析价格走势的趋势和方向。EMA与简单移动平均&#xff08;SMA&#xff09;类似&#xff0c;但对最新价格的权重更大&a…

【办公类-47-02】20250103 课题资料快速打印(单个docx转PDF,多个pdf合并一个PDF 打印)

背景需求&#xff1a; 2023区级大课题《运用Python优化3-6岁幼儿学习活动材料的实践研究》需要做阶段资料 本来应该2024年6月就提交电子稿和打印稿。可是python学具的教学实验实在太多了&#xff0c;不断生成&#xff0c;我忙着做教学&#xff0c;都没有精力去整理。 2025年…

unity学习4:git和SVN的使用差别

目录 1 svn 1.1 操作逻辑 1.2 对应工具 1.3 SVN避免冲突的好习惯 2 git 2.1 git的基础操作逻辑 2.1.1 commit时&#xff0c;提交文件之外的其他文件需要pull 2.1.2 commit时&#xff0c;发现要提交的本地文件和服务器的文件冲突了 2.1.3 pull 时 2.2 对应工具 2.3 …

【数据库初阶】MySQL数据类型

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; 数据库初阶 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 亲爱的小伙伴们&#xff0c;大家好&#xff01;在这篇文章中&#xff0c;我们将深入浅出地为大家讲解 MySQL…

kubernetes学习-Service

kubernetes学习-Service 1. Service说明2. 功能3.Service类型3.1 NodePort3.1.1 创建web-service.yaml3.1.2 创建web-pod.yaml3.1.3 部署3.1.4 验证 3.2 ClusterIP3.2.1 创建web-clusterIp-service.yaml3.2.2 创建web-clusterIp-pod.yaml3.2.3 部署3.2.4 验证 3.3 LoadBalancer…