写点什么

Python 爬虫:看看舞蹈区哪个女网红最给力,如果爬虫不是为了爬视频

作者:程序媛可鸥
  • 2022 年 3 月 17 日
  • 本文字数:1546 字

    阅读完需:约 5 分钟

我还给大家准备了 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 个学习计划,我的学习计划主要包括规划图和学习进度表。


分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习



用户头像

Python编程资料加Q群免费领取:419829237 2022.03.14 加入

还未添加个人简介

评论

发布
暂无评论
Python爬虫:看看舞蹈区哪个女网红最给力,如果爬虫不是为了爬视频_Python_程序媛可鸥_InfoQ写作平台