Python 爬虫:看看舞蹈区哪个女网红最给力,如果爬虫不是为了爬视频
我还给大家准备了 Python 实现的五子棋游戏和超级玛丽源码,还有 Python 相关电子书和视频,都可以在左边扫码领取,没有软件或者不会安装也也可以。
二、爬虫流程
首先确定我们的需求是什么,以及数据来源分析。
通过开发者工具进行抓包分析,分析视频播放地址来自哪里。
得到视频播放 url ,分析视频播放 url 可以从哪里获取。
先获取所有视频的 ID;
把这个 ID 传入视频数据包里面,就可以获取音频 url 地址以及视频标题;
音频 url 地址,可以进行保存数据;
代码实现步骤
发送请求 >>> 获取数据 >>> 解析数据 >>> 保存数据
发送请求, 对于视频数据包 url 地址
获取数据, 获取[服务器]返回的数据内容
解析数据, 提取我们想要的内容 视频 url 地址以及视频标题
保存数据
三、代码展示
导入模块
import requests # 数据请求模块
import pprint # 格式化输出模块
import re # 正则表达式
翻页分析请求 url 地址的变化规律,构建 for 循环。
for page in range(3, 11):
print(f'===================正在爬取第{page}页的数据内容===================')
url = f'https://v.****.com/g/all?set_id=31&order=hot&page={page}'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
\d+匹配多个数字 视频 ID 都是数字 想要的数据就用()
通过 re 模块里面 findall 方法,从 response.text 里面匹配查询 <a href="//v.huya.com/play/(\d+).html" class="video-wrap"数据内容。
video_id_list = re.findall('<a href="//v.****.com/play/(\d+).html" class="vide-wrap"', response.text)
for video_id in video_id_list:
1、发送请求
对于视频数据包 url 地址
字符串格式化的方法,就是把 video_id 传入 url 里面。
ur1 = f'https://liveapi.****.com/moment/getMomentContent?videoId={video_id}&uid=&_=1639224652506'
headers 请求头,作用伪装 python 代码,模拟成浏览器对于服务器发送请求。
某些网站 不加 headers 会被反爬, 被识别出来是爬虫程序,服务器不会给你返回数据。
headers 字典数据类型,键值对形势一个键对应一个值,键和值之间是用冒号隔开的。
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
}
通过 requests 这个模块里面 get 请求方法,对于 url 地址发送请求,并且携带上 headers 请求头进行伪装,最后 response 变量接收返回数据。
response = requests.get(url=url, headers=headers)
<Response [200]> response 响应体对象 200 状态码,表示请求成功。
response.text 获取响应体的文本数据。
2、获取数据
获取[服务器]返回的数据内容。
返回 json 字典数据,对于后续解析数据会更加方便。
print(response.json())
pprint.pprint(response.json())
3、解析数据
提取我们想要的内容 视频 url 地址以及视频标题
对于字典提取数据, 有了解过吗?
就是根据冒号左边的内容,提取冒号右边内容。
title = response.json()['data']['moment']['title']
video_url = response.json()['data']['moment']['videoInfo']['definitions'][0]['url']
4、保存数据
需要对于视频 url 发送请求,获取二进制数据内容。
response.content 获取响应体二进制数据内容。
video_content = requests.get(url=video_url, headers=headers).content
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到 1 套比较全的学习资源之前,我并没着急去看第 1 节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做 1 个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
评论