模块内容回顾(二)
正则表达式与re模块
正则表达式是一门独立的语言,所有的编程语言都可以使用,它的作用可以简单的概括为,利用一些特殊符号组合产生一些特殊的含义然后去字符串中筛选出符合条件的数据
'字符组'
[0123456789] 匹配0到9任意一个数
[1-9] 匹配0到9任意一个数
[a-z] 匹配26个小写字母
[A-Z] 匹配26个大写字母
[0-9a-zA-Z] 匹配数字或者小写字母,或者大写字母
'特殊符号'
. 匹配除换行符以外的任意字符
\w 匹配数字、字母、下划线
\W 匹配非数字、非字母、非下划线
\d 匹配数字
^ 匹配字符串的开头
$ 匹配字符串的结尾
两者组合使用可以非常精确的限制匹配内容
a|b 匹配a或者b(管道符的意思是或)
() 给正则表达式分组,不影响表达式的匹配功能
[] 字符组 内部填写的内容默认都是或的关系
[^] 取反操作,匹配除了字符组里面的其他所有字符
注意上尖号在中括号内和中括号的意思完全不同
'量词' 正则表达式默认都是贪婪匹配,尽可能多的匹配
* 匹配零次或多次 默认多次
+ 匹配一次或多次 默认多次
? 匹配零次或一次 默认一次
{n} 重复n次
{n,} 重复n次或更多次 默认多次
{n,m} 重复n到m次 默认m次
'贪婪匹配与非贪婪匹配'
待匹配的文本
<script>alert(123)</script>
待使用的正则(贪婪匹配)
<.*> '表示先匹配<然后点接收所有数据,重复无数次,直到最后一个>'
匹配的内容:
<script>alert(123)</script>
待使用的正则(非贪婪匹配):
<.*?>
匹配的内容:
<script></script>
re模块
常见的操作方法
import re
res = re.findall() 查找所有符合正则表达式要求的数据值
res = re.findter() 查找所有符合正则表达式要求的数据值结果是一个可迭代对象
res = re.search() 匹配到一个符合条件的数据值就结束
res = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
print(res) # ['oldboy']
findall分组优先展示:优先展示括号内正则表达式匹配到的内容
res = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')
print(res) # ['www.oldboy.com']
使用?:组合可以去掉分组优先展示
res = re.search('www.(baidu|oldboy).com','www.oldboy.com')
print(res.group()) # www.oldboy.com
res = re.match('www.(baidu|oldboy).com', 'www.oldboy.com')
print(res.group()) # www.oldboy.com
网络爬虫之requests模块
第三方模块的下载与使用
第三方模块:别人写的模块,一般情况下功能都特别强大
使用第三方模块:第一必须要先下载后面才可以使用
下载第三方模块的方式:
1.pip工具
下载第三方模式的句式:pip install 模块名
下载第三方模块临时切换仓库:pip install 模块名 -i 仓库地址
下载第三方模块指定版本:pip install 模块名==版本号 -i 仓库地址
2.pycharm提供快捷方式
"""
下载第三方模块可能会出现的问题:
1.报错并有警告信息:
WARNING:You are using pip version 20.2.1
原因是pip版本过低,只需要拷贝后面的命令执行更新操作即可
d:\python38\python.exe -m pip install --upgrade pip
更新完成后再次执行下载第三方模块的命令即可
2.报错并含有Timeout关键字
说明当前计算机网络不稳定,只需要换网或者再试几次即可
3.报错并没有关键字
百度搜一下
"""
网络爬虫之requests模块
import requests
1.朝指定网址发送请求获取页面数据(等价于在浏览器输入网址回车访问)
res = requests.get()
自动化办公领域之openpyxl
1.excel文件的后缀名问题
03版本之前 .xls
03版本之后 .xlsx
2.操作excel表格的第三方模块
xlwt往表格中写入数据、wlrd从表格中读取数据
'创建、保存文件'
from openyxl import Workbook
'创建一个excel文件'
wb = Workbook()
'表格里面添加sheet'
wb1 = wb.create_sheet()
'保存创建的wb文件,需要给文件命名'
wb.save(r'111.xlsx)
3.填写数据
wb1.append(['一个列表是一个数据']) # 表头
wb1.append(['对应表头的数据'])
内置模块之hashlib、subprocess、logging
hashlib模块
加密算法的基本操作
import hashlib
1.选择加密算法
md5 = hashlib.md5()
2.传入明文数据
md5.update(这里必须是二进制)
3.获取加密密文
res = md5.hexdigest()
'加盐处理'
import hashlib
分开传入,可以传入当前时间、用户名部分
subprocess模块
import subprocess
res = subprocess.Popen(
'asdas', # 这里填写的是操作系统要执行的命令
shell= True, # 这里是固定配置
stdin=subprocess.PIPE, # 输入命令
stdout=subprocess.PIPE # 输出命令
)
print('正确结果',res.stdout.read(.decode('gbk'))
# 获取操作系统执行命令之后的正确结果
print('错误结果',res.stderr)
# 获取操作系统执行命令之后的错误结果
logging日志模块
1.日志可以简单的理解为记录行为举止的操作
2.日志的级别:5种级别
CRITICAL>ERROR>WARNING>INFOP>DEBUG
3.日志的组成
1.产生日志
2.过滤日志
3.输出日志
4.日志格式