目录
1. 文本处理
什么是文件:文件是操作系统提供的一个虚拟概念,拿来存储信息的
什么是文本:.txt/.word/.md/.py/.xml/.ini 存储的是文字
视频/音频文件(多媒体文件)
操作思路
# 我们如何通过文本编辑器去控制txt文件
# 1. 找到文件路径 ’D:\上海python12期视频\python12期预科班视频\day 05\新时代中国特色社会主义.txt‘
# 2. (通过记事本)打开文件
# 3. 读取/修改操作
# 4. 保存
# 5. 关闭文件
# file_path = r'D:\上海python12期视频\python12期预科班视频\day 05\新时代中国特色社会主义.txt'
# f = open(file_path) # 把该路径的文件读入内存,只是没有可视化的界面而已
# print(f)
# data = f.read() # 读取文件
# print(data)
# f.close()
# 打开文件的三种模式
r--》read(只读不可写)
w-->write(只写不可读,清空文本文件)
a--》append(只写不可读,追加)
flie_path = r'D:\11日常课程11\test\关于实施乡村振兴战略的意见.txt'
# w: 清空后写入
# a:直接追加在文本末尾
f = open(flie_path,'a',encoding='utf8') # encoding告诉计算机用什么编码格式翻译硬盘中的0和1
print('f.readable():',f.readable())
print('f.writable():',f.writable())
f.write('我们是一个伟大的国家')
# data = f.read()
# print(data)
右键点击文本--》 local history --》 show history
utf8
0001-->a
0010--> b
0011--> c
美国的编码能给中国人用吗?中国也弄了一套编码规则,中国的叫gbk
0001--> 中
==乱码情况下,先去掉乱码,修改标准语言在添加==
2. 高级文本处理
1.特殊字符注释
python里面存在特殊字符,怎样去除?
1. 路径前面加r
2. 在无效参数前加\去注释掉
路径出现紫色(无效参数)打不开?==路径前加r==
2.t和b模式
b模式
==gbk/utf8==只针对==文本==
所以==音频==通过==rb模式==打开-->读取二进制,b模式下没有encoding这个参数,b不单独使用,一般与r
# t和b模式
# gbk/utf8只针对文本,所以音频通过rb模式打开-->读取二进制,b模式下没有encoding这个参数,b不单独使用,一般与r/w/a一起配合使用
f = open(r'D:\上海python12期视频\python12期预科班视频\day 05\01 文本处理.mp4','rb') # 读入内存
data = f.read()
t模式
t模式针对文本文件,t模式不单独使用,必读得和r/w/a一起使用
==rt模式,默认r==
f = open(r'D:\上海python12期视频\python12期预科班视频\day 05\关于实施乡村振兴战略的意见.txt','rt',encoding='utf8')
data = f.read()
print(data)
3.高级应用(可读可写)
可读可写-->==不建议使用==
- r+:又可读又可写
- a+:又可读又可写
- w+:又可读又可写(清空)
打开一个文件,内容是 abc
写入 10s -> abc后面加个d
读出 5s --> 没有写入 --> abc
写入 10s --> abc后面加个d
再过 5s --> 第一次写入成功了 --> abcd
又过了5s --> 第二次写入给计算机的指令是 abc后面加个d -> 报错
==r+可写可读,a+可写可读,w+可写可读(清空文件)==
4.自动关闭文件
手动关闭
f = open(r'D:\上海python12期视频\python12期预科班视频\day 05\关于实施乡村振兴战略的意见.txt','r+',encoding='utf8') #r -->可读 r+ -->又可读又可写
print(f.readable())
print(f.writable())
f.close() # 解除他对操作系统的占用
with 会自动关闭文件
with open(r'D:\上海python12期视频\python12期预科班视频\day 05\关于实施乡村振兴战略的意见.txt','r+',encoding='utf8') as fr: # 这个缩进内部的代码都是文件打开的状态
data = fr.read()
print(data)
print(1) #代码运行到缩进外面时,文件自动关闭
3. 文本处理+词云分析
1. 读取文件内容
import jieba
import imageio
import wordcloud
with open(r'D:\上海python12期视频\python12期预科班视频\day 05\huijiadeyouhuo.txt','r+',encoding='utf8') as fr:
data = fr.read()
2. 使用结巴模块对文件内容切割
data_list = jieba.lcut(data)
data = ' '.join(data_list)
3. 找到一张洪世贤的图片
img = imageio.imread(r'D:\上海python12期视频\python12期预科班视频\day 05\hongshixian.jpg')
4. 使用词云模块生成词云
w=wordcloud.WordCloud(background_color='white',mask=img,font_path=r'C:\Windows\Fonts\simsun.ttc',max_words=150)
w.generate(data)
w.to_file('nihaosaoa.png')
4. 爬虫课程:
requests库 /selenium库
- 什么是爬虫
- 什么是数据
- 爬虫的比喻
- 爬虫的原理
请求数据 ---> 安装第三方指令 pip3 install requests
获取数据 ---> 无需自己做
解析获取有价值的数据 ---> re正则模块(内置)
保存数据 ---> 文件处理
5. 爬虫原理
通过浏览器发送请求拿到内容;通过requests模拟浏览器发送请求拿到内容
6. 爬虫的流程
- 发送请求(填入一个url)
- 获取内容
- 筛选你所需要的数据
- 保存的数据到文件
7. requests模块的使用
import requests
res = requests.get(url)
# 文本
res.text
# 二进制流
res.content
8. re模块
re.S 全局搜索
.*?贪婪匹配,匹配所有
data = '<img id="blogLogo" src="https://www.baidu.com" alt="返回主页">'
re.findall('src="(.*?)"',data) 从内容中筛选所需要的内容
.*? 你需要什么就把什么东西(.*?) # 80-90场景下就用.*?
豆瓣案例
#豆瓣解析文本思路
# 一部电影的 html标签与数据
# .*?贪婪匹配,匹配所有
# 获取电影名称,电影详情页链接,电影评分,电影评价人数正则规则
# <div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>
import requests
import re
response = requests.get(
url='https://movie.douban.com/top250'
)
# 获取响应文本
# print(response.text)
'''
1.电影名称
2.电影详情页链接
3.电影评分
4.电影评价人数
'''
# 2.解析并提取数据
# 查找所有
# re.S: 全局查找
# re.findall('正则匹配规则', '解析文本', re.S)
# 获取所有电影的名称
# movie_name = re.findall('<div class="item">.*?<span class="title">(.*?)</span>', response.text, re.S)
# 获取电影的名称与详情页地址
# movie_name = re.findall('<div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>', response.text, re.S) #正则不能换行
movie_list = re.findall('<div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>', response.text, re.S)
# 循环
with open('douban.txt', 'a', encoding='utf-8') as f:
for line in movie_list:
movie_url = line[0]
movie_name = line[1]
movie_point = line[2]
movie_count = line[3]
f.write(movie_url + '---' + movie_name + '---' + movie_point + '---' + movie_count + '\n')
print('写入数据成功,爬虫程序结束...')