代码改变世界

day01:爬取**网视频:

2019-07-01 14:47  风度翩  阅读(184)  评论(0编辑  收藏  举报
课堂笔记:
一、爬虫基本原理
1、什么是爬虫?
爬虫就是爬取数据
2、什么是互联网?
由一堆网络设备,把一台台的计算机互联到一起的称之为互联网
3、互联网建立的目的?
数据的传递和数据的共享
4、什么是数据?
电商平台的商品信息(淘宝,京东,,,)
12306,票务信息
链家,自如租房平台
,,,,,
5、什么是上网?
普通用户:
打开浏览器--->输入网址--->往目标主机发送请求
--->返回响应数据--->把数据渲染到浏览器中

爬虫程序:
模拟浏览器
--->往目标网站发送请求
--->返回响应数据
--->解析并提取有价值的数据
--->保存数据(文件写入本地、持久化到数据库)
6、爬虫的全过程
1.发送请求(请求库:Requests/Selenium)
2.获取响应
3.解析数据(解析库:BeautifulSoup4)
4.保存数据(存储库:文件保存/MongoDB)

总结:
假如互联网中的数据比喻成一座宝藏,爬虫就是在挖宝

二、Requests请求库
1、安装与使用
pip3 install requests
2、分析请求流程(模拟浏览器)
-百度:
1.请求url
www.baidu
2.请求方式
get
post
3.响应状态码

案例分析:

'''
爬取校花网视频: 一、请求url http://www.xiaohuar.com/v/ 二:请求方式 GET 三、请求头信息 User-Agent:用户代理 ''' import time import requests #爬虫三部曲 # 1. 发送请求 def get_page(url): response = requests.get(url) return response # 2. 解析数据 import re def parse_index(html): # findall匹配所有 # re.fainfall('正则匹配规则','匹配文本','匹配模式') # re.S: 对全部文本进行搜索匹配 detail_urls = re.findall( '<div class="items"><a class="imglink" href="(.*?)"', html, re.S) # # for detail_url in detail_urls: # print(detail_url) return detail_urls #解析详情页 def parse_detail(html): movie_url = re.findall('<source src="(.*?)">',html,re.S) #print(movie_url) if movie_url: return movie_url[0] # 3. 保存数据 import uuid # uuid.uuid4() 根据时间戳生成一段世界上唯一的字符串 def save_video(content): with open(f'{uuid.uuid4() }.mp4','wb') as f: f.write(content) print('视频下载完成1') # main + 回车键 # 测试用例: if __name__ == '__main__': for line in range(6): url = f'http://www.xiaohuar.com/list-3-{line}.html' # 发送请求 response = get_page(url) # print(response) # 返回响应状态码 # print(response.status_code) # 返回响应文本 # print(response.text) # 解析主页面 detail_urls = parse_index(response.text) # 循环遍历详情页url for detail_url in detail_urls: # print(detail_url) # 往每一个详情页发送请求 detail_res = get_page(detail_url) # print(response.text) # 解析详情页获取视频url movie_url = parse_detail(detail_res.text) # 判断视频url存在则打印 if movie_url: print(movie_url) # 往视频url发送请求获取视频二进制流 movie_res = get_page(movie_url) # 把视频的二进制流传给save_video函数保存到本地 save_video(movie_res.content)