当前位置:网站首页>10分钟就能写出来的——25~30K的国外企业招聘面试考题,这不是轻轻松松吗~
10分钟就能写出来的——25~30K的国外企业招聘面试考题,这不是轻轻松松吗~
2022-07-24 05:39:00 【小熊猫爱恰饭】
说来你可能不信 (https://jq.qq.com/?_wv=1027&k=4lDV25FG)
今天的这个案例,是一位同学的面试题,
人在国外,月薪25~30K
本来以为是难度很大的反爬、逆向或者算法之类的,
谁知道,就是一个很简单的爬虫
10分钟就写出来了
嗨害大家好!又是我小熊猫 今天来教大家秒杀一下面试10K题!
(https://jq.qq.com/?_wv=1027&k=4lDV25FG)
有什么python相关报错解答自己不会的、或者源码资料/模块安装/
女装大佬精通技巧都可以来这里:(https://jq.qq.com/?_wv=1027&k=2Q3YTfym)或者文末私号问我




案例介绍
是一个看美剧的网站,从电影界面这里就可以知道视频内容是m3u8的视频格式

什么是m3u8?
m3u8是苹果公司推出的视频播放标准,是m3u8的一种,只是编码格式采用的是UTF-8。
现在的视频网站采用的是流媒体传输协议,就是将一段视频切成无数个小段,这几个小段就是ts格式的视频文件,一段一段的网站上播放。这样做的好处是观看更加流畅,因为他会根据网络状况自动切换视频的清晰度,在网络状况不稳定的情况下,对保障流畅播放非常有帮助。
网站分析 (https://jq.qq.com/?_wv=1027&k=4lDV25FG)
通过开发者工具抓包分析找寻数据来源

可以通过开发者工具搜索ts文件 找到m3u8的url地址, 或者直接搜索m3u8也可以找到相应的数据包


如果想要批量爬取电影内容的话, 还需要继续找寻这个m3u8的url地址是从哪里可以获取的

和上面的方法一样, 在开发者工具里面进行搜索,找寻相应的数据内容, 找到数据来源之后, 还需要去分析headers里面的请求url地址 以及请求方式 请求头…
- 确定请求url地址

- 确定请求方式

- 请求头参数

以上是爬取一个视频内容的分析, 如果想要爬取多个视频内容, 还要继续分析 这个请求参数里面URL地址可以从哪里获取

代码 (https://jq.qq.com/?_wv=1027&k=4lDV25FG)
实现的基本步骤
- 发送请求, 对于视频播放详情页面发送请求
- 获取数据, 获取响应体文本数据
- 解析数据, 提取视频标题以及数据包的参数url
- 发送请求, 对于找寻的数据包发送请求
- 获取数据, 获取响应体文本数据
- 解析数据, 提取m3u8的url地址
- 发送请求, 对于m3u8的url地址发送请求
- 获取数据, 获取响应体文本数据
- 解析数据, 提取所有ts文件
- 保存数据, 把视频内容保存本地
完整代码
link_url = 'https://www.imeiju.pro/Play/7483-0-0.html'
headers = {
'Host': 'www.imeiju.pro',
'Referer': 'https://www.imeiju.pro/js/player/baiduyun.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}
response = requests.get(url=link_url, headers=headers)
response.encoding = response.apparent_encoding # 自动识别编码
# print(response.text)
title = re.findall("var playn = '(.*?)'", response.text)[0] # 标题
video_info = re.findall('第(\d+)集\$(.*?)\$', response.text)
print(title)
print(video_info)
for num, index in video_info:
print(title, num, index)
url = 'https://www.imeiju.pro/ckplayerx/m3u8.php' # 请求网址
# 请求参数 字典数据类型
data = {
'url': index,
'f': 'ck_m3u8'
}
# 最后用response变量接收返回数据
response = requests.get(url=url, params=data, headers=headers)
# url: '(.*?)' (.*?) 表示你想要数据内容
m3u8_url = re.findall("url: '(.*?)'", response.text)[0]
print(m3u8_url)
m3u8_data = requests.get(url=m3u8_url).text
# ? 非贪婪匹配模式 split() 分割 返回列表
m3u8_data = re.sub('#E.*', '', m3u8_data).split()
print(m3u8_data)
for link in m3u8_data: # for 遍历 把列表元素一个一个提取出来
ts_url = 'https://fangao.stboda.com/concat/20210609/fb22f65d884d47238f75ea8aed8cf249/cloudv-transfer/' + link
ts_content = requests.get(url=ts_url).content
# b二进制 w写入(会覆盖的) a追加写入(不会覆盖)
with open(title + num + '.mp4', mode='ab') as f:
f.write(ts_content)
print(ts_url)
怎么样?是不是很简单?
我觉得真的就是分分钟解决的程度…
成功没有捷径可走,技术才是硬道理!
我是小熊猫,咱下篇文章见啦(*◡‿◡)

边栏推荐
- 【小型物体测速仪】只有原理,无代码
- Redis data type -string (string type)
- Breadth first search (template use)
- I have seven schemes to realize web real-time message push, seven!
- 【学习笔记】Web页面渲染的流程
- 类加载的过程(生命周期)详情分析
- [lvgl (important)] style attribute API function and its parameters
- oss授权单个bucket权限
- 【LVGL】组件的样式的设置、更改、删除API函数
- JMeter distributed pressure measurement
猜你喜欢

Directory and file management

Special effects - when the mouse moves, there will be a custom expression trail

Process and planned task management
![[lvgl (5)] label usage](/img/55/f25a510cf04caff7ee15e72360c3a1.png)
[lvgl (5)] label usage

【媒体控制器】开源项目学习笔记(基于Arduino Micro开发板)
![[lvgl (6)] display Chinese settings and make Chinese font](/img/a4/1b0d0b7a5789ecc8f9a2a8cd93d92e.png)
[lvgl (6)] display Chinese settings and make Chinese font

【LVGL(1)】LVGL的简单介绍

Redis.conf详解

Today, let's talk about the underlying architecture design of MySQL database. How much do you know?

kubernetes简介和架构及其原理
随机推荐
LM393 电压比较器及其典型电路介绍
Today, let's talk about the underlying architecture design of MySQL database. How much do you know?
反射
Redis data type -string (string type)
kubernetes简介(kubernetes优点)
Redis data type - list list
It's not too much to fight a landlord in idea!
Identification of Chinese medicinal materials
Redis basic type - combined with set
[lvgl (4)] event and event bubble of the object
安装snownlp包过程出现Requirement already satisfied:及Read timed out.问题解决方法
基于回归分析的广告投入销售额预测——K邻近,决策树,随机森林,线性回归,岭回归
Talk about browser cache again
Talk about strong cache and negotiation cache
极客星球丨 字节跳动一站式数据治理解决方案及平台架构
Several common problems of SQL server synchronization database without public IP across network segments
Sort by an attribute value of an object in the array
[audio decoding chip] Application of vs1503 audio decoding chip
MapReduce (I)
kubernetes简介和架构及其原理