最近又重新拾起了,对python的热情.
贴个地址: https://github.com/d1y/lovepack/blob/master/kuaishou.py

前戏说明

因为我近乎癫狂的喜欢一个女孩三年,算上今年是第四年,但是可悲的我只是鱼塘的一"只"(注意我说的是动词)
我想联系她,我想找到她,但是我发现根本没有她的联系方式, 戏剧性的一幕,我有她的快手,所以每天都只有对着快手目睹佳人
但是我并不喜欢快手,这让我有点难堪,所以当时我就觉得做一个小玩意,用来下载他的视频和图片

技术相关

第一次有这个想法的时候,我在考虑用什么技术, nodejs | php | python 都可以
最终我考虑选择使用python来写这个小玩意.
我开始考虑从抓包手机端出手,但是发现这货的接口要研究好久,网上也没有现成的轮子,我就考虑在 web 端去抓取

哦,后面的ID需要传值

_api = 'https://live.kuaishou.com/profile/'
_headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'
}
_r = requests.get(_api+id, headers=_headers)

在这里有一个小坑,如果你不传递 userAgent 就无法获取到内容
当拿到了html片段之后,就可以拿到想要的东西了

当然了,我一开始想要正则式的方式拿到需要的东西,我就花了几天的时间去学习这个

有点东西,我放弃了,最后采用的方案是使用: pyquery 而不是使用 bs4

from pyquery import PyQuery as pq

仔细的研究了一下这个web端口, 发现它这个fontsc用的太狠了

我就不下手了
我开始细细研究这些数据该怎么拿到,在我查看源码的时候我发现一个小东西

大部分数据都在这个对象里,当然这时候就要看一下这个对象到底是什么玩意了~

window.__APOLLO_STATE__ = {"defa...":{}
}

细节部分就不给大家看了,就给大家看看我是怎么解决的:

import json
from pyquery import PyQuery as pqdef str2JSON( html, flag = False ):'''@tips { 先把拿到的数据转为`dict` }@param {str} - html@return {dict}'''_html = pq(html)_con = _html('#app').next().next().text()_firstStr = _con.index('{')_lastStr = _con.rindex('}')_code = _con[_firstStr:_lastStr]_code = _code[: int( _code.rindex('}') )+1]data_obj = json.loads(_code)['defaultClient']if flag:_title = _html('.profile-user-name').text()return {"title": _title,"data": data_obj};return data_obj;

这样就拿到了python的一个dict,但是在拿到了dict之后,我们该怎么做呢?
当然是找到它的作品的key

通过分析,格式大致为:

_key = '$ROOT_QUERY.publicFeeds({"count":24,"pcursor":"","principalId":"'+id+'"})'

她的每一个作品那么就分别为:

data_obj = str2JSON(_r.text)
_lists = data_obj[_key]
_result = [];
for _index,_list in enumerate(_lists['list']):_now = _key + '.list.' + str(_index)_result.append(data_obj[_now])

非常好,那么现在我们就拿到了作品的list,现在我们写一个小循环来依次下载

for list in lists:_lists = list['imgUrls']['json'] # 注意这里!for i,img in enumerate(_lists):pass

如果你是跟着我的节奏来的话,到这里就应该出问题了,第一就是她的数据类型有几种

  • video - 就是视频
  • other - 其他

通过观察发现video资源还通过访问其他 url 才能获取到,所以这里要判断他们的类型,下面是伪代码:

type = 'video'
if (type == 'video'):pass
else:pass

还有就是你会发现拿到的图片是.webp格式,这格式是google开发在chrome的,有点小众,你得把它转换成 .jpg 这就要用到著名的 PIL,下面是伪代码

from PIL import Image
_im = Image.open(_file).convert('RGB')
_im.save( _now, 'jpeg' )
os.unlink(_file)

.webp文件创建,然后通过这个包转换,接下来就删除 .webp 这个文件,嗯,对,这是正确姿势

接下来就到了说说视频怎么下载了

看到了吗,后面的那个 did 不要管,你会发现有两个超乱的字符串,相信你通过观察也能看出来这个第一个乱码就是 用户的 id 乱码,后面那个就是作品的id

你肯定想问这货从哪里得知,其实很简单

简单吧

fuck_str = 'User:xjkfljdslkjdfjds'
result = fuck_str.split(':')[1]

后面的拿到视频链接就不用我说了吧!

分享完咯~

用法

用法很简单

在你拿到对方的id之后, 你可以传入 --id=xxx' 这样,这里说一下 ``--flag 这个参数是用来生成用户的.md文件的, 还有 --debug 参数是用来测试的

注意啊, 所有生成的文件是在 ~/lovepack 下面的, 此处的 ~ 表示为 HOME PATH

转载于:https://www.cnblogs.com/kozo4/p/11350741.html

用Python写了个下载快手视频的小脚本相关推荐

  1. 用Python写一个营销号垃圾视频生成器

    用Python写一个营销号垃圾视频生成器 可能是闲着太无聊,然而复习是不可能复习的,就做了一个这个玩意儿,改天进军UC和百家号(不会真有人用吧) 先看看效果:(1:20以后) 用Python做的营销号 ...

  2. python广告营销平台_荐用Python写一个营销号垃圾视频生成器

    用Python写一个营销号垃圾视频生成器 可能是闲着太无聊,然而复习是不可能复习的,就做了一个这个玩意儿,改天进军UC和百家号(不会真有人用吧) 先看看效果:(1:20以后) 用Python做的营销号 ...

  3. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...

  4. 用python写一个用驼峰法来命名变量脚本

    用python写一个用驼峰法来命名变量脚本 前言 一.思路 1.用有道翻译来翻译变量名 2.获取剪切板内容 3.热键监听来执行程序 二.使用步骤 1.大致的使用方法 2.要用到的库 2.主方法 总结 ...

  5. 使用python完成的一个烟花小程序-厉害了,我用Python写了一个自动回复拜年信息的小程序!...

    大年三十到年初一,有没有也被拜年短信(大部分是群发)搞得很焦虑?不回复似乎显得很没有礼貌,一一回复又累心劳神.一位大神程序员今年就用python拯救了自己的新年假期.这里分享这位社区博主happycc ...

  6. Python项目实战:下载腾讯漫画的脚本及源码【女朋友在也不担心我花钱购买漫画了】

    目录 工具: 命令行帮助 GUI预览效果 全部源码: 下载源码: 代码仅供学习交流使用 下载腾讯漫画的脚本.空参运行进入交互式模式,支持的参数可以加-h或--help参数查看. 工具: python3 ...

  7. 写一个实时监控IP连通性的小脚本

    #!/bin/bash ##连通性观察记录小脚本 ##得出的的结果应该是18秒每次的间隔,添加监控IP只需要修改PIP的变量值即可 ##运行时只需要sh shell_name & ##结束时只 ...

  8. 用Python写一个自动下载视频、弹幕、评论的软件(2022最新)

    文章目录 序言 效果展示 下载视频 下载弹幕 下载评论 软件生成 打包 序言 哈喽兄弟们,今天来实现一个Python采集视频.弹幕.评论与一体的小软件. 平常咱们都是直接代码运行,不过今天我们做成软件 ...

  9. Python解析m3u8拼接下载mp4视频文件

    一.关于m3u8: m3u8是苹果公司推出一种视频播放标准,是m3u的一种,不过编码方式是utf-8,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I ...

最新文章

  1. 华为云总裁郑叶来:易获取、用得起、方便用的算力是人工智能发展的关键
  2. 事业单位招 计算机面试实践技能操作,2019山东事业单位卫生类招聘面试实践技能概论...
  3. 几百个Android开源个性化控件、工具库、项目、开发工具快快收藏
  4. php 时间周期,php 的生命周期
  5. 惠普电脑如何下载c语言软件,惠普笔记本电脑上的语言栏怎么弄
  6. js获取鼠标所在html元素的id和属性
  7. Arduino M0 的一个坑(2015-12-25)
  8. prim算法_最小生成树(Kruskal和Prim算法)
  9. mysql,php和js根据经纬度计算距离
  10. mysql 数据库缓冲池_MySQL5.6新特性快速预热Buffer_Pool缓冲池
  11. js百度地图小车html,百度地图web开发(基于javascript)
  12. httpclient 连接池工具类_C# 中 HttpClient 的简单使用
  13. jenkins 手动执行_Win下Jenkins-2.138源码编译及填坑笔记
  14. 【超全面】【持续更新中】Windows-美化指南
  15. C# - Poker Sort
  16. 当生命科学遇上AI,会产生怎样1+1>2效果?
  17. Linux根目录简介
  18. 车载显示屏刷鸿蒙系统,华为智能品鉴会如期进行,鸿蒙系统车载显示屏首次亮相...
  19. 爬虫-反爬二:有道词典js加密
  20. arcgis怎么压缩tif文件_怎么把图片文件大小压缩到25k到40k还比较清晰

热门文章

  1. 80x86编程手册_编程从8到80
  2. Android UI 组件开源软件(一)
  3. Antd 表格 ellipsis属性兼容性问题
  4. dsm操作系统服务器,DSM 5.1操作系统提供以下新功能
  5. 目标检测模型常用评价指标-(AP、mAP)
  6. python if函数用法_python中if条件中的Contains()函数“in”
  7. 微信小程序运营怎么做?技巧盘点
  8. 人工智能观看100部电影学习如何识别接吻 | 广东省智能创新协会
  9. 个人能力--认知能力
  10. MP2451使用注意事项