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