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

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

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.kler.cn/a/460387.html

相关文章:

  • 算法——回溯模式
  • flutter组件————Row和Column
  • 【国产NI替代】基于STM32+FPGA的8振动+4温度(16bits)数据采集板卡解决方案,支持全国产
  • HTML5实现好看的二十四节气网页源码
  • Lua迭代器如何使用?
  • uniapp3 手写签名组件(vue3 语法)封装与应用
  • UE(虚幻)学习(三) UnrealSharp插件中调用非托管DLL
  • 前端通过函数方法触发文件上传、限制文件类型、限制文件大小、上传的进度
  • 仿快团团商品详情页底部按钮头像轮播(uniapp)
  • XQR5VFX130-1CN1752V,,具有高度的可编程性和灵活性的FPGA中文技术资料
  • 摄像头监视脚本
  • Wonder Dynamics技术浅析(一)
  • [算法] [leetcode-1137] 第 N 个泰波那契数
  • 【自动驾驶汽车通讯协议】RGMII通信技术详解
  • 自学记录:鸿蒙5使用ArkTS和ArkUI实现Live View功能
  • 【经管】上市公司供应链风险数据测算数据集+dofile(2008-2023年)
  • gitlab的搭建及使用
  • udp分片报文发送和接收
  • 经典排序算法:冒泡排序与选择排序
  • List排序的方法
  • JVM和异常
  • 【华为OD-E卷 - 机房布局 100分(python、java、c++、js、c)】
  • Edge如何获得纯净的启动界面
  • XIAO Esp32 S3 轻松发送 HTTP 请求,打造智能物联网应用
  • 优化咨询行业团队协作:通过有效的项目管理工具实现高效协作
  • 爬虫代码中如何添加异常处理?