- 昨日内容回顾
- 正则表达式
- 今日内容详细
- re模块*
- re.findall()
- re.finditer()
- re.search()
- re.match()
- re.compile()
- re模块补充说明
- 分组
- 别名
- 网络爬虫简介
- 什么是互联网
- 互联网发明的目的是什么
- 上网的本质是什么
- 网络爬虫的本质
- 实操
- 第三方模块下载
- 下载速度慢
- 下载报错*
- openpyxl模块
- 在python中操作Excel的模块
- Excel版本后缀
- openyxl实操
昨日内容回顾
- 正则表达式
- 简介
- 字符组
- 特殊符号
- 量词
- 贪婪与非贪婪
- 取消转义
今日内容详细re模块*
re.findall()在python中如果想要使用正则表达式 re模块是选择之一
# 通过正则表达式筛选出文本中所有符合条件的数据
# 语法结构
re.findall('正则','待匹配的文本')
# e.g
res = re.findall('o','jojo johnathan joe john')
print(res) # ['o', 'o', 'o', 'o', 'o'] 列表
re.finditer()
# finditer与findall作用一致 只不过结果会被处理成迭代器对象 用于节省内存
res = re.finditer('o','jojo johnathan joe john')
print(res) #
# 可以通过用__next__打印
print(res.__next__()) # #麻烦不推荐
for i in res: #推荐
print(i)
re.search()
# search通过正则表达式匹配到一个符合条件的内容就结束
res = re.search('o','jojo johnathan joe john')
print(res) #
print(res.group()) # o
re.match()
# match通过正则表达式从头开始匹配 如果头部已经不符合 那么后面也不看了 就很离谱
res = re.match('o','jojo johnathan joe john')
print(res) # None
re.compile()
# compile能够提前准备好正则 之后可以反复使用 减少代码冗余
obj = re.compile('o')
print(re.findall(obj,'jjowjwodosjorojvotb')) #['o', 'o', 'o', 'o', 'o', 'o']
print(re.findall(obj,'sdescjodscjeojsojddeoj')) #['o', 'o', 'o', 'o']
print(re.findall(obj,'sjdjeojdojosjococsd')) #['o', 'o', 'o', 'o', 'o']
re模块补充说明
分组
# findall针对分组的正则表达式匹配到的结果 优先展示括号内的正则
#语法结构
re.findall('()','')
# e.g
res = re.search('a(b)c','abcabcabcabc')
print(res) # ['b', 'b', 'b', 'b']
#证明
res = re.search('a(b)c','abcabcabcabc')
print(res.group()) # abc
print(res.group(0)) # abc #索引0是整个正则匹配到的内容
print(res.group(1)) # b #分组里括号内的内容
print(res.group(2)) # 报错 正则内只有一个分组
#取消分组优先展示
re.findall('(?:内容)','')
别名
# 整正则分组后起名字 不需要用索引取值
# 语法结构
res = re.search('内容(?P内容)内容','')
earch('a(?Pb)(?Pc)','abcabcabcabc')
print(res.group()) #abc
print(res.group(1)) #b
print(res.group('id')) #b
print(res.group('name'))#c
网络爬虫简介
什么是互联网
互联网发明的目的是什么将全世界的计算机连接到一起组成的网络
上网的本质是什么将接入互联网的计算机上面共享数据
网络爬虫的本质基于互联网访问别人计算机上面的资源(有些计算机存在的意义就是让别人访问,这种类型的计算机我们也称之为服务器)
实操模拟计算机浏览器朝目标网址发送请求获取数据并筛选
只要是浏览器可以访问到的数据网络爬虫理论上都可以爬取
import requets # 导入模块
# 朝目标地址发送网络请求获取响应数据(相当于在浏览器地址栏中输入网址并回车)
res = requests.get(xxx) # 访问网站
print(res.content) # 获取bytes类型的数据
print(res.text) # 获取解码后的数据
# 可以通过正则表达式与()的组合优先展示数据 来获取网页标签内的内容
res = re.findall('(.*) ') # 就能获取h标签内的数据
第三方模块下载
下载速度慢方式1:借助pip工具 install 模块名==版本号
方式2:pycharm内在settings里下载
pip 工具默认使用国外的仓库地址下载
可以手动添加源地址
清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/
华中科技大学:http://pypi.hustunique.com/
豆瓣源:http://pypi.douban.com/simple/
腾讯源:http://mirrors.cloud.tencent.com/pypi/simple
华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple/
下载报错*pip3.8 install 模块名 -i 源地址
openpyxl模块 在python中操作Excel的模块1.pip工具版本过低 直接拷贝提示信息里面的更新命令即可
python38 -m pip install --upgrade pip
2.网络波动 关键字是Read timed out 只需要重新下载几次即可 或者切换一个网络稳定一点的
3.有些模块在下载使用之前需要提前配置指定的环境 结合具体情况 百度搜索
主要用于操作excel表格 是pandas底层操作表格的模块
Excel版本后缀1.openpyxl
属于近几年比较流行的模块
但对03版excel之前的版本不太兼容
2.xlwt、xlrd
同样可以操作excel表格
兼容所有版本的excel文件 但是使用方式没有openpyxl简单
openyxl实操03版之前 excel文件后缀为 .xls
03版之后 excel文件后缀为 .xlsx
如果是苹果本 excel文件后缀为 .csv
安装 openpyxl
若版本不兼容先在
# 创建Excel文件
from openpyxl import Workbook # 导入模块
wb = Workbook() # 创建excel文件对象
wb1 = wb.create_sheet('sheet1') # 创建一个名为 sheet1 的工作簿
wb2 = wb.create_sheet('sheet2') # 创建一个名为 sheet2 的工作簿
wb1.title = 'sheet111' # 修改工作簿对象 wb1 的名字为 sheet111
wb.save(r'111.xlsx') # 保存excel文件
wb1['A1'] = 'content of A1' # 可以通过 ['位置'] 的方式在指定位置填写内容
wb1.append(['username', 'password', 'age', 'hobby']) # 也可以通过.append直接添加一行多个数据
# 也可以写算数公示
# wb1['A3'] = '=sum(A1:A2)'
wb.save(r'111.xlsx')



