VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python爬虫 >
  • 用Python批量获取世界各地视频,只有你喊不出名字的,没有我爬不到的

兄弟们,一般国外的电影电视剧,都找不到资源,很多人就对此束手无策了。
这个时候python就很有用了,只要叫得出名字的,都可以几行代码搞定~

获取结果

在这里插入图片描述
在这里插入图片描述

复制代码
#我还给大家准备了这些资料,直接在群里就可以免费领取了。
#一群:872937351 (群满了的话加二群)
#二群:924040232
#python学习路线汇总
#精品Python学习书籍100本
#Python入门视频合集
#Python实战案例
#Python面试题
#Python相关软件工具/pycharm永久激活
复制代码

 

代码展示

复制代码
import requests  # 数据请求模块 pip install requests
import re  # 正则表达式模块 内置模块


url = 'https://www.meiju11.com/Play/7816-0-0.html'
headers = {
    'Referer': 'https://www.meiju11.com/Play/7816-0-0.html',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
response.encoding = response.apparent_encoding # 自动识别编码转码
# print(response.text)
# 每个网站数据结构都不一样, 都是需要重新去数据结构 
title = re.findall("var playn = '(.*?)',", response.text)[0]
video_data = re.findall('第\d+集\$(.*?)\$rrm3u8', response.text)
print(title)
print(video_data)
num = 1
for index in video_data:
    video_name = f'{title}第{num}集'
    print(video_name, index)
    # 1. 发送请求,  对于 url地址发送请求
    # 确定请求的网址
    video_url = f'https://www.meiju11.com/ckplayerx/m3u8.php?url={index}&f=ck_m3u8'
    # headers 请求头 用来伪装python代码的 不被识别出来是爬虫程序
    # User-Agent 用户代理 浏览器基本身份标识 建议都加
    # Referer 防盗链  告诉服务器我们的发送请求url地址 是从哪里跳转过来
    # 加headers就穿个衣服 , 不加裸奔.... 有时候只是加一个UA 相当于你只有裤头
    # Cookie 用户信息, 检测是否有登陆账号
    # Host 域名
    headers_1 = {
        'Referer': 'https://www.meiju11.com/js/player/rrm3u8.html',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
    }
    # 通过requests这个模块里面get请求方法 对于url地址发送请求, 并且携带上headers请求头 最后用response变量接收返回数据
    response = requests.get(url=video_url, headers=headers_1)
    #  <Response [200]>  响应对象  200 状态码表示请求成功
    # 虽然请求成功, 但是没有得到自己想要的数据内容.....
    # print(response.text) 文本数据
    # 3. 解析数据, 提取我们想要的数据内容 视频播放地址
    m3u8_url = re.findall("url: '(.*?)'", response.text)[0]
    print(m3u8_url)
    # 4. 发送请求, 对于这个播放地址发送请求
    m3u8_data_1 = requests.get(url=m3u8_url, headers=headers_1).text
    # . 是匹配任意字符(除了换行\n)  * 匹配前一个字符0或者无限个
    m3u8_data = re.sub('#EX.*', '', m3u8_data_1).split()
    for link in m3u8_data:
        # https://fangao.stboda.com/concat/20211115/54b420f81ccc4339b56b11b74adc15a7/cloudv-transfer/a0941a88a1784001b46560ea05257010_0000031.ts
        # a0941a88a1784001b46560ea05257010_0000000.ts
        # 6. 解析数据, 提取所有ts文件
        ts_url = 'https://fangao.stboda.com/concat/20211115/54b420f81ccc4339b56b11b74adc15a7/cloudv-transfer/' + link
        # 7. 保存数据 (二进制数据[图片/音频/视频/特定格式的文件]) 进行发送请求 获取数据
        # ts_content = requests.get(url=ts_url).content # response.content 获取二进制数据
        # # a 追加保存 b 二进制模块
        # with open(video_name + '.mp4', mode='ab') as f:
        #     f.write(ts_content)
        print(ts_url)
    num += 1
复制代码

 

出处:https://www.cnblogs.com/hahaa/p/15727844.html

 



相关教程