【python】价值25~30K的国外企业招聘面试考题

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

今天的这个案例,是一位同学的面试题,人在国外,月薪25~30K

本来以为是难度很大的反pa、逆向或者算法之类的,

谁知道,就是一个简简单单有手就行得案例

划重点,10分钟就写出来了 😜

这里来看看我跟那位同学得聊天记录吧~

绝对真实,童叟无欺!!!

案例介绍

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

什么是m3u8格式呢?

m3u8是苹果公司推出的视频播放标准,是m3u8的一种,只是编码格式采用的是UTF-8。

现在的视频网站采用的是流媒体传输协议,就是将一段视频切成无数个小段,这几个小段就是ts格式的视频文件,一段一段的网站上播放。

这样做的好处是观看更加流畅,因为他会根据网络状况自动切换视频的清晰度,在网络状况不稳定的情况下,对保障流畅播放非常有帮助。

网站分析

通过开发者工具抓包分析找寻数据来源

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

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

和上面的方法一样, 在开发者工具里面进行搜索,找寻相应的数据内容,

找到数据来源之后, 还需要去分析headers里面的请求url地址 以及请求方式 请求头…

  1. 确定请求url地址

  2. 确定请求方式

  3. 请求头参数

以上是爬取一个视频内容的分析,

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

代码展示

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)
    有需要视频教程得可+VX:pytho8987
    # 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)

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值