文本, 爬虫 文本处理 文本高级 文件处理+词云分析 爬虫介绍 爬取文本信息 ---一部电影的html标签与数据
文件与文本
什么是文件:文件是操作系统提供的一个虚拟概念,拿来存储信息的
什么是文本: .txt/.word/.md/.py /.xml /.ini 存储的是文字
视频/音频文件(多媒体文件)
我们如何通过文本编辑器去控制txt文件
1.找到文件路径
pycharm中迅速找的方法:鼠标右键点击文本-->copy path
2.(通过记事本)打开文件
file_path = r'C:Users龘Desktoppython12期day05新时代中国特色社会主义.txt'
f = open(file_path) #把该路径的文件读入内存,只是没有可视化的界面而已,本质上是一样
print(f)
data = f.read() #读取文件
print(data)
f.close()
打开文件的三种模式r-->read(只读不可写)/w-->write(只写不可读,清空文本文件)/a-->apend(只写不可读,追加)
file_path = r'C:Users龘Desktoppython12期day05新时代中国特色社会主义.txt'
f = open(file_path,'r')
print('f.readable():',f.readable())#逗号隔开打印多个东西
print('f.writable():',f.writeable())
f.write('sdf')
data=f.read()
print(data)
write模式清空文件后如何恢复
右键点击文本-->local history -->show history
w:清空后写入(慎用)
a:直接追加在文本末尾(不清空)
encoding
大致理解:美国的编码不能给中国用,中国也弄了一套编码规则,中国的叫gbk
编码解码规则的不同
3.读取或者修改操作
4.保存
5.关闭文件
文本高级
t模式和b模式打开音频视频文件
b模式
gbk/utf8只针对文本,所以音频通过rb模式打开-->读取二进制,b模式下没有encoding这个参数,已经读取二进制了就不再需要做编码了,b不单独使用一般与r/w/a一起配合使用,但是一般很少写入音频或视频的二进制数据(及很少用wb/ab),一般只读取二进制数据
ab作用:读取音频二进制数据做数据文件拷贝,数据爬虫使用
f=open(r'D:Program FilesfeiqRecv Filesday 05上午 2 文本高级.mp4','r',encoding='utf8')
# print(f)
print(f.read())
# print(1)
# print(r'\n')
# print(2)
t模式
使用r/w/a即默认使用rt/wt/at模式
t模式针对文本文件,必须得和r/w/a一起使用
转义字符转换成普通字符
方式一:字符外加r
方式二:字符内加
可读可写-->不建议使用
打开一个文本文件,内容是abc
写入10s,-->abc后面加个d
后5s读出abc-->认为没写入
第二次写入10s-->abc后面加个d
再过5s-->第一次写入成功了,-->文本文件变成了abcd
又过5s-->第二次写入的结果读出(但是之前的给计算机的指令是abc后面加个d,-->报错
使用方式:
f = open(r'C:Users龘Desktoppython12期day05关于实施乡村振兴战略的意见.txt','r+')
print(f.readable())
print(f.writable())
r+:可写可读
a+:可写可读
w+:可写可读(会情况文件)
为什么文件打开后不用关闭?
电脑内存变化
4kb-->4mb-->4g
关闭方式
f.close() #解除打开的文件对操作系统的占用,如果开多个视频文件会增加对内存占用
with open自动关闭文件,
with会自动关闭文件
使用方式(语法):
with open(r'C:Users龘Desktoppython12期day05关于实施乡村振兴战略的意见.txt','r+',encoding='utf8') as f:
#这个缩进内部的代码都是文件打开的状态
data=f.read()
print(data)
print(1) #当文件运行到缩进外时文件自动关闭
with open() as f:
#缩进内部的代码都是文件打开的状态
print(1) #当文件运行到缩进外是文件自动关闭
文件处理+词云分析
1.读取文件内容
让某个词多出现几次,使用for循环在文档中添加该词
2.使用jiba模块对文件内容切割
3.找到一张图片控制词云形状(使用词云模块中的mask参数)
4使用词云模块生成词云
字体乱码:在windows中找字体路径
添加指定词汇
形状不符合
爬虫介绍
requests库
selenium库
什么是爬虫
爬虫指的是爬取数据
什么是数据
互联网中能看到的都是数据
淘宝商品信息等...
爬取某某网站小视频
爬虫比喻
把数据比喻成一座宝藏,爬虫其实就是就是在挖取宝藏
爬虫的原理
发送请求
-->requests,selenium
url(资源定位)
import requests
'''
爬取校花网图片
'''
#1.发送请求
#get发送请求
response = requests.get(url=r'http://www.xiaohuar.com//d/file/20190823/75149a1f9845c50e8158c64793be8759.jpg')
#接收二进制流数据
print(response.content)
#保存数据
with open(r'xiaohua1.jpg','wb') as f:
f.write(response.content)
print('图片下载成功!')
'''
爬取梨视频
'''
#往梨视频地址发送请求,获取二进制流数据
response2 = requests.get('https://video.pearvideo.com/mp4/adshort/20190829/cont-1596373-14322811_adpkg-ad_hd.mp4')
#把二进制流数据保存到本地
#wb:write + bytes 写二进制流模式
#凡是写入二进制流数据,不需要指定字符编码
with open('梨视频.mp4','wb') as f2:
f2.write(response2.content)
print('视频下载成功')
<Response [200]> #<>对象符号
print(response.txt) #获取文本,但是音频/视频/图片返回的数据都是二进制流数据bytes类型
print(response.content) #接收二进制流数据
wb等价于write+bytes
with open('xiaohua.jpg','wb') as f: #同时创建一个名为xiaohua.jpg的文件,不指定路径默认保存在当前文件夹
获取数据
-->无需自己做
返回web前端模板数据+所需数据
浏览器软件将返回的数据展示出来
解析获取有价值的数据
-->request
解析(通过前端页面代码中的标记获取标记内的数据)
re正则模块(内置)
保存数据
-->文件处理
爬取文本信息
re正则模块
内置:python解释器自带
第三方:别人写好的模块或者库把他下载到本地去使用
使用方式:import re
正则匹配规则
写好规则提取想要提取的数据
使用方法:
查找所有
通过浏览器审查元素定位
re.findall('正则匹配规则','解析文本',re.S)
re.S:全局查找
不加re.S一行一行找
加re.S一块一块找
---一部电影的html标签与数据
正则匹配原理:通过标签找到元素,然后找到元素中所需要的数据并提取
.*?指的是贪婪匹配,匹配所有,过滤掉两个标签直接的内容
(.*?)---提取两个标签之间的内容
贪婪匹配内容过多处理方式
一定不能手动换行,手动换行正则就变了
可以调整视图:view-->active editor-->use soft wraps---(换行展示)