课堂笔记:
一、爬虫基本原理
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)
![]()