最近看了一下网页版的微博,觉得那上面的视频不错,想获取它上面的下载链接,于是就写了这篇博文。

1. 几个视频播放平台的下载链接的实现

1. 西瓜视频

西瓜视频这个平台上面的视频下载链接一开始就存在于视频播放界面,电脑键盘F12键查看源码,按Ctrl+F搜索script标签,依次点击,可以发现其中一个script标签下有一段json数据,而当前播放的视频的下载链接就在这个json数据中,只不过下载视频进行了加密,根本看不懂,需要找到相应的解密函数即可。(感兴趣的读者可以去看看小编的这篇文章:Python爬虫:从js逆向了解西瓜视频的下载链接的生成)

2.斗鱼视频

斗鱼视频这个平台上的视频下载,使用了ajax技术,在当前播放界面可以找到一个ajax请求,在这个请求里面可以找到当前视频的m3u8文件下载链接(但是这个ajax请求是一个post请求,且请求参数进行了加密,需要模拟加密才能进行访问),之后根绝这个m3u8文件可以下载当前视频的一些ts文件,最后把ts文件合并称mp4文件即可.(感兴趣的读者可以去看看小编的这篇文章:Python爬虫:通过js逆向我发现了斗鱼视频请求参数的加密原理)

3.快手视频

快手视频这个平台上的视频下载和斗鱼类似,但比斗鱼简单很多.(感兴趣的读者可以去看看小编的这篇文章:Python爬虫:给我一个链接,快手视频随便下载)

2. 实现原理

实现原理和斗鱼视频、快手视频的原理一样,找到相应的ajax请求链接即可(这又是一个post请求)

但是如果要使用Python爬虫来得到这个数据,请求头需要添加一些字段,比如cookie、user-agent等字段。

但是不知道小编这个post请求data这个参数是不是写错了(requests模块),还是这个链接存在一定问题,反正试了很多方法,总是获取不到完整数据,最后把post请求改成get请求才最终成功获取。

3. 运行结果

[video(video-fHqZMMbf-1677750262052)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=865253588)(image-https://img-blog.csdnimg.cn/img_convert/ab51fed4277a57c7dca4fa877db89738.jpeg)(title-Python爬虫:抓取微博上的视频下载链接)]

参考代码如下:

import requests
import json
import re # https://weibo.com/tv/show/1034:4857185377910909?mid=4857186621067064
video_url = input('输入:')
id = re.findall('https://weibo.com/tv/show/(\d*:\d*)?.*',video_url)[0]
url = 'https://weibo.com/tv/api/component?page=/tv/show/{0}&data={1}'
data_str = '{%22Component_Play_Playinfo%22:{%22oid%22:%22' + id + '%22}}'
url = url.format(id, data_str)
headers = {
"cookie": "SINAGLOBAL=1642093035151.6916.1590980167697; UOR=news.huse.edu.cn,widget.weibo.com,www.baidu.com; SCF=AoITVZf4HS3L4qWC3iYin9ewmWRQdnQsEsKnkUAKVrhUGsrSuJsFtN6Puc1jeCHZyLFnsESBUt7YCk5DWM4I86o.; SUBP=0033WrSXqPxfM72wWs9jqgMF55529P9D9W5yXxXxcVnl70-8qPgRKnCg5JpVF02ReK-E1hMReKep; SUB=_2AkMU3QDBdcPxrAVSmvsVxGnqbYtH-jynCGk3An7uJhMyAxh87n0PqSVutBF-XEV4WnRTgvv_qqEol-0DEUdZBTB_; UPSTREAM-V-WEIBO-COM=b09171a17b2b5a470c42e2f713edace0; _s_tentry=-; Apache=2882565213456.4116.1677573461765; ULV=1677573461958:47:1:1:2882565213456.4116.1677573461765:1669435390809; XSRF-TOKEN=KLbhVzQdbXXP_F7laqGMs0xt; WBPSESS=Dt2hbAUaXfkVprjyrAZT_FgOH_8DbGpQMRQSA1lwg1qH-m_kdZLq1PmsYPFYeK6IewUd4GmxAOEZC3rK48r1iqi82kid-HnqOCAwipsM3hrg5LtskejSkGEhijD2kFHQ8CBnf3q1vzJpVpquSnhK5Q==",
"origin": "https://weibo.com",
"page-referer": "/tv/show/1034:4857185377910909",
"referer": "https://weibo.com/tv/show/1034:4857185377910909?mid=4857186621067064",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3877.400 QQBrowser/10.8.4507.400",
}
rsp = requests.get(url=url, headers=headers)
dict2 = json.loads(rsp.text)
urls_dict = dict2['data']['Component_Play_Playinfo']['urls']
for key in urls_dict:
print(key,f'https:{urls_dict.get(key)}')

Python爬虫:原来微博上的视频下载链接在这啊的更多相关文章

  1. Python 爬虫 Vimeo视频下载链接

    python vimeo_d.py https://vimeo.com/228013581 在https://vimeo.com/上看到稀罕的视频 按照上面加上视频的观看地址运行即可获得视频下载链接 ...

  2. 【Python项目】简单爬虫批量获取资源网站的下载链接

    简单爬虫批量获取资源网站的下载链接 项目链接:https://github.com/RealIvyWong/GotDownloadURL 1 由来 自己在收集剧集资源的时候,这些网站的下载链接还要手动 ...

  3. 获取youku视频下载链接(wireshark抓包分析)

    随便说两句 前两天写了一个python脚本,试图以分析网页源码的方式得到优酷视频的下载地址,结果只得到视频的纯播放地址,下载纯播放地址得到的文件也无法正常播放视频. 这里共享一下播放地址得到的方法(想 ...

  4. 使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接

    使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接: 使用requests获取html后,分析html中的标签发现所需要的链接在& ...

  5. 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

    [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...

  6. python爬虫:爬取慕课网视频

    前段时间安装了一个慕课网app,发现不用注册就可以在线看其中的视频,就有了想爬取其中的视频,用来在电脑上学习.决定花两天时间用学了一段时间的python做一做.(我的新书<Python爬虫开发与 ...

  7. Python——操作smb文件服务器(上传和下载)

    最近在做上传和下载,然后文件比较大和多,就用到了文件服务器,文件服务器是实体机 ,不是在本地, 然后用python 通过pysmb模块就可以直接进行操作 mac选择前往.连接服务器去查看文件服务器里都 ...

  8. python爬虫实践——爬取“梨视频”

    一.爬虫的基本过程: 1.发送请求(请求库:request,selenium) 2.获取响应数据()服务器返回 3.解析并提取数据(解析库:re,BeautifulSoup,Xpath) 4.保存数据 ...

  9. 【Python学习 】Python实现的FTP上传和下载功能

    一.背景 最近公司的一些自动化操作需要使用Python来实现FTP的上传和下载功能.因此参考网上的例子,撸了一段代码来实现了该功能,下面做个记录. 二.ftplib介绍 Python中默认安装的ftp ...

  10. Python爬虫:微博粉丝列表

    前言 本来打算做一个关于微博粉丝列表的爬虫,可以统计一下某个微博账号的粉丝里面,僵尸粉(水军)的数量,大V数量. 结果写完爬虫才发现,现在微博只给人看粉丝列表的前5页.......哈哈,好吧.挺无奈的 ...

随机推荐

  1. new的函数如果有return

    1 function FnA() { return { a: 1 } } 2 function FnB() { return false } 3 function FnC() { return tru ...

  2. 一个简单的工具开发:从学生端更新程序部署工具说起,浅谈qt中自定义控件制作和调用、TCP协议下文件的收发 、以及可执行文件的打包

    一个简单的工具开发:从学生端更新程序部署工具说起,浅谈qt中ui的使用和TCP协议下文件的收发.以及可执行文件的打包 写在前面,Qt Designer是一个非常操蛋的页面编辑器,它非常的...怎么说呢 ...

  3. Surp Suite入门

    BurpSuite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据.服务器端的返回信息等.Burp Suite主要拦截HTTP和HTTPS 协议的流量,通过拦截,Burp S ...

  4. bitlocker加密如何找密钥解锁

    步骤1:在其他设备上登录[微软账号],地址:https://account.microsoft.com 步骤2:找到[自己的设备],查看[Bitlocker]密钥登录进去能看到[设备],找要解锁的那台 ...

  5. java逻辑运算中 | | 和 | 的区别

    本文主要阐明逻辑运算中 | |(短路或) 和 |(逻辑或) 的异同 | | 和 | 的相同之处: 只有二者都是假时,结果才为假,否则结果为true. | | 和 | 的不同之处在于: a | | b: ...

  6. 【WPF】自定义一个自删除的多功能ListBox

    原文地址 https://www.cnblogs.com/younShieh/p/17008534.html 如果本文对你有所帮助,不妨点个关注和推荐呀,这是对笔者最大的支持~ 我需要一个ListBo ...

  7. ArcGIS工具 - 按字段分割图层

    天下大势,合久必分,分久必合.合并.分割在GIS数据处理和管理中也十分常见,例如按行政区划名称导出多个区县行政图层.按地类名称导出多个地类图层. 功能说明 其实,在ArcGIS中除了按属性导出外,最接 ...

  8. MongoDB分片副本集生产环境部署-Windows版本

    title: MongoDB分片副本集生产环境部署(Windows版本) date: 2022-10-29 17:21:11 tags: - 运维 系统架构 配置环境 系统都是windows 10 专 ...

  9. (14)go-micro微服务服务层Handle开发

    目录 一 Handle层开发功能说明 需要完成的服务开发功能: 从哪找需要开发的功能 二 代码编写 三 最后 一 Handle层开发功能说明 需要完成的服务开发功能: 登录 注册 查询用户信息 修改信 ...

  10. 【项目实战】从零到一搭建Spring Boot整合Mybatis-plus

    前言 2023年想搭建一套属于自己的框架,做一个属于自己想法的项目.这些年工作中一直用公司已有的框架,以前有跟着学习视频搭建过,但自己真正动手搭建时发现问题还是很多,比如没有引入Mybatis-plu ...