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

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

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

示例1:发送 GET 请求

python 复制代码
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 请求

python 复制代码
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 头

python 复制代码
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模块爬取网页信息

python 复制代码
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 函数时,必须指定文件名,并且可以选择性地指定打开文件的模式、编码等。

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

相关推荐
觅远14 分钟前
python+PyMuPDF库:(三)pdf文件的选择性合并、其他格式文件转pdf
python·pdf·自动化
互联网杂货铺15 分钟前
单元测试、系统测试和集成测试知识
自动化测试·软件测试·python·测试工具·单元测试·测试用例·集成测试
麦田里的稻草人w20 分钟前
【pyqt】(三)designer
python·pyqt
neowell37 分钟前
在mac上通过Vundle安装YouCompleteMe(YCM)
python·macos·vim·mac
qq_2739002339 分钟前
pytorch张量高级索引介绍
人工智能·pytorch·python
RacheV+TNY2642781 小时前
电商数据API接口的智能化与自动化发展探索
网络·人工智能·python·自动化·api
心软且酷丶1 小时前
leetcode:面试题 17.01. 不用加号的加法(python3解法)
python·算法·leetcode
明月与玄武1 小时前
JMeter 如何并发执行 Python 脚本
python·jmeter执行python
是十一月末2 小时前
Opencv实现Sobel算子、Scharr算子、Laplacian算子、Canny检测图像边缘
人工智能·python·opencv·计算机视觉
凌肖战2 小时前
python3中的字典推导式
python