day05

什么是文件

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

什么是文本

.txt/.word/.md/.py/.ini/.xml

如何通过文本编辑控制文件

1.找到文件路径

2.打开文件

3.读取/修改文件

4.保存文件

5.关闭文件

打开文件的三种方式

1.r--》read(只读不写 )

2.w--》(只写不读,清空文本内容)

3.a--》append(只写不读,追加 )

打开文件的t和b模式

gbk/utf8只针对文本,所以音频通过rb模式打开-->读取二进制,b模式下没有encoding这个参数,b不单独使用,一般与r/w/a一起配合使用

t模式支队文本文件,t模式不单独使用,必读的和r/w/a一起使用

高级应用

r+可写可读

a+可写可读

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

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

爬虫原理

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('文本爬取成功')
posted @ 2019-08-28 19:20  Isayama  阅读(108)  评论(0编辑  收藏  举报