当前位置:网站首页>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)
怎么样?是不是很简单?
我觉得真的就是分分钟解决的程度…
成功没有捷径可走,技术才是硬道理!
我是小熊猫,咱下篇文章见啦(*◡‿◡)

边栏推荐
- ESP32超详细学习记录:NTP同步时间
- Jenkins CI CD
- Take you to understand the inventory deduction principle of MySQL database
- 【LVGL】组件的样式的设置、更改、删除API函数
- Jenkins CI CD
- 【LVGL(5)】标签的(label)用法
- 数据分析思维之从整体出发分析零售行业——全方位多方面细节分析
- JS - numerical processing (rounding, rounding, random numbers, etc.)
- [lvgl (4)] event and event bubble of the object
- mysql获取自增行标(区别mysql版本)
猜你喜欢

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

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

Special effects - click the mouse, and a random color of love will appear

Neural network superparameter adjustment (based on ray package)

【学习笔记】Web页面渲染的流程

【LVGL(2)】LVGL入门,在CodeBlock上进行模拟以及移植STM32

oss授权单个bucket权限

极客星球丨 字节跳动一站式数据治理解决方案及平台架构

目录和文件管理
![[esp8266 spot welder] Based on esp8266 for Arduino](/img/9a/81b0d16572116445d46ba4e34a6e4e.png)
[esp8266 spot welder] Based on esp8266 for Arduino
随机推荐
不运动也能增肌???打一针冬眠黑熊的血清就行
【LVGL(2)】LVGL入门,在CodeBlock上进行模拟以及移植STM32
Getting started with redis
【学习笔记】网页出现白屏可能的原因与优化方法
【LVGL(重要)】样式属性API函数及其参数
类的加载器 和 双亲委派机制详解
[lvgl (6)] display Chinese settings and make Chinese font
账号和权限管理
目录和文件管理
[jQuery自定义插件] 1 自定义缓存插件-jQueryCache
随机森林、LGBM基于贝叶斯优化调参
Special effects - starry cosmic background effects
【微信小程序】一文搞懂条件渲染、列表渲染以及wxss模板样式
基于回归分析的广告投入销售额预测——K邻近,决策树,随机森林,线性回归,岭回归
Special effects - click with the mouse and the fireworks will burst
I have seven schemes to realize web real-time message push, seven!
Browser local storage
Random forest, lgbm parameter adjustment based on Bayesian Optimization
PostgreSQL date handler usage
Solution: exit status 1 and exit status 145 appear when the console uses NVM to control the node version