什么是文件

文件是操作系统提供的一个虚拟概念, 用来存储信息

什么是文本

.txt/.word/.md/.py/.xml/.ini 存储的是文字

如何通过文本编辑器控制.txt文件

  1. 找到文件路径
  2. 打开文件
  3. 读取/修改文件
  4. 保持
  5. 关闭
file_path = r'C:\Users\Black\Documents\Python learning\day 05\github.txt'
f = open(file_path) # 把该路径的文件读入内存,只是没有可视化的界面而已
data = f.read() # 读取文件(内容)

打开文件的三种模式

r ---> read (只读不可写)

w ---> write (只写不可读, 清空文本内容)

a ---> append (只写不可读, 追加)

file_path = r'C:\Users\Black\Documents\Python learning\day 05\github.txt'

f = open(file_path, 'a', encoding = 'gbk') # encoding 告诉计算机用什么编码格式翻译硬盘中的0和1
print('f.readable:', f.readale())
print('f.writable:', f.writable()) f.write('追加写入') date = f.read()
print(data)

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模式不单独使用,必读得和r/w/a一起使用

f = open(r'C:\Users\Black\Documents\Python learning\day 05\github.txt', 'rt', encoding = 'gbk')
data = f.read()
print(data)

高级应用

r+ 可写可读

a+ 可写可读

w+ 可写可读(清空文件)

使用with open在缩进结束后会自动关闭文件

with open(r'C:\Users\Black\Documents\Python learning\day 05\github.txt', 'r+', encoding = 'gbk') as f:
# 这个缩进内部的代码都是文件打开的状态
data = f.read
print(data)

文本处理 + 词云分析

import jieba
import wordcloud
import imageio # 读取文件内容
with open(r'C:\Users\Black\Documents\Python learning\day 05\github.txt', 'r+', encoding = 'gbk') as f:
data = f.read() # 使用结巴对文件内容进行切割
data_list = jieba.lcut(data)
data = ' '.join(data_list) # 将github logo图片读入内存
img = imageio.imread(r'C:\Users\Black\Pictures\githublogo.jpg') # 使用词运模块生成词云图
w = wordcloud.WordCloud(background_color= 'white', mask= img, font_path = r'C:\Windows\Fonts\simsun.ttc')
w.generate(data)
w.to_file('github.jpg')

效果如下

爬虫原理

  1. 发送请求 (填入一个url)
  2. 获取数据
  3. 解析数据
  4. 保存数据

requests模块

import requests
res = requests.get(url= '目标网址')
# 文本
res.text
# 二进制流 凡是二进制流数据,不需要指定字符编码
res.content

re模块

# re.S 全局搜索

data_list = re.findall(正则匹配规则, 解析内容, re.S)

# 贪婪匹配 .*?  过滤任何内容
# 非贪婪匹配 (.*?) 提取内容

爬取图片

# 爬取视觉中国图片

import requests
# 使用requests.get()发送请求
response = requests.get(url = 'http://goss.cfp.cn/creative/vcg/nowarter800/new/VCG211235767437.jpg' ) # print(response) 对象
# 接受二进制流
# print(response.content) # 保存数据
with open('VCG_GET.jpg', 'wb') as f:
f.write(response.content)
print('图片下载成功')

爬取视频

# 爬取二更视频

# 往视频地址发送请求, 获取二进制流
import requests
response = requests.get(url= 'http://v1.ergengtech.com/transcode/9c55722e379a9523b51e36f7cd3945cb/2fcc5d2709dd5aa1d03982f040410d6a.mp4') # 把二进制 流数据保存到本地
# wb: write + bytes 写二进制流模式
# 凡是二进制流数据,不需要指定字符编码
with open('ergen_video.mp4', 'wb') as f:
f.write(response.content)
print('视频下载成功')

爬取文本

# 爬取豆瓣top25电影
# 电影名称/电影详情链接/低电影评分
# 1.发送请求
import requests
import re
response = requests.get(url='https://movie.douban.com/top250') # print(response.text) # 2.析提取数据
# 查找所有
# re.S 全局查找
# re.findall('正则匹配规则', '解析文本', 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) # print(movie_list) # 循环写入 with open('douban.txt', 'a', encoding='utf-8') as f:
for line in movie_list:
movie_name = line[1]
movie_score = line[2]
movie_num_of_comm = line[3]
movie_website = line[0]
f.write(movie_name + '---' + movie_score + '---' + movie_num_of_comm + '---' + movie_website + '\n')
print('文本爬取成功')

最新文章

  1. tcl学习
  2. c# 基础(重写与覆盖:接口与抽象,虚函数与抽象函数)
  3. platform
  4. String的一些细节
  5. grep参数说明及常用用法
  6. [Red5]Red5之Flash流媒体服务器的安装与使用教程完整版(组图)
  7. git命令与github使用
  8. #include 和 #pragma comment 的相对路径起点
  9. C++之const限定符
  10. [squid] kid1| ERROR: No forward-proxy ports configured.
  11. [Swift]LeetCode84. 柱状图中最大的矩形 | Largest Rectangle in Histogram
  12. 金蝶k/3 K3云之家消息查询发送是否成功SQL语句
  13. ue4 Skeletal Mesh编辑器
  14. Java基础再复习(继承、多态、方法内部类**、HashMap用法**、参数传递**)
  15. CF数据结构练习
  16. SQL 常用判断语句
  17. idea使用maven打包jar包
  18. tp3.2 ajax 表单提交
  19. Scratch3.0——作品截图
  20. iOS中autolaylout和sizeclass的理解

热门文章

  1. 一文看懂 K8s 日志系统设计和实践
  2. 删除TFS上的团队项目
  3. Arduino 配置 ESP8266环境
  4. nyoj 84-阶乘的0 (规律题)
  5. 领扣(LeetCode)第三大的数 个人题解
  6. vant-ui的van-area使用
  7. SQL Server Management Studio 安装流程
  8. 【Linux系列】Centos7安装Samba并将工作区挂载到win(八)
  9. 看完这篇还不会用Git,那我就哭了!
  10. Java工作流系统-驰骋BPM工作流 引擎的工作模式