,Python案例篇:某短视频采集(不用等着大数据给你推送了)

简介: 前言大家好,我是辣条哥最近几天每天不为别的就是疯狂的刷短视频,不知道你们没有试过,明明来瞌睡了就会想我再刷三个,看到我喜欢的或者我三个都不喜欢我就睡~然后莫名其妙就看到外面天色有点微微发亮了 ~~~ 谁看谁不迷糊于是乎我开始总结了一下,肯定是系统推送有问题不然不至于让我这一顿熬夜,那么这时候我的程序员毛病来了,为啥我不直接采集出来这样就没必要一个一个的去刷了吗? 说干就干,边干边记录然后就有了这个博文了~目录前言采集目标工具准备项目思路解析简易源码分享采集目标工具准备开发工具:pycharm开发环境:python3.7, Windows10使用工具包

前言
大家好,我是辣条哥

最近几天每天不为别的就是疯狂的刷短视频,不知道你们没有试过,明明来瞌睡了就会想我再刷三个,看到我喜欢的或者我三个都不喜欢我就睡~然后莫名其妙就看到外面天色有点微微发亮了 ~~~ 谁看谁不迷糊

于是乎我开始总结了一下,肯定是系统推送有问题不然不至于让我这一顿熬夜,那么这时候我的程序员毛病来了,为啥我不直接采集出来这样就没必要一个一个的去刷了吗? 说干就干,边干边记录然后就有了这个博文了~

目录
前言
采集目标
工具准备
项目思路解析
简易源码分享
采集目标

工具准备
开发工具:pycharm
开发环境:python3.7, Windows10
使用工具包:requests

项目思路解析
我们今天需要获取的是某短视频的点赞视频信息,首先定位到我们需要的数据位置,通过抓包的方式进行准确的数据,点击快手页面进行登录,点击个人中心,点击我赞的视频,在当前页面进行抓包,获取到我们想要的数据信息

明确到自己需要采集的数据之后做我们爬虫的第一步,获取到我们目标地址:某短视频首页,通过requests发送网络请求,带上我们需要的请求头,这个请求头需要注意,他的请求头需要带上accept: /,不然在获取下一页的时候页数是不会变化的,这个需要重点注意,请求头入下:

headers = {

'accept': '*/*',
'content-type': 'application/json',
'Cookie': '',
'Host': 'www.kuaishou.com',
'Origin': 'https://www.xxxxxxxxxx.com',
'Referer': 'https://www.xxxxxxxxx.com/profile/3x382umv98zjz79',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36',

}
1
2
3
4
5
6
7
8
9
发送的是post请求需要携带的参数,pcursor是用来控制页数信息的,传递的数据是载荷数据,传输时以json接受就行,一下是提交的数据信息:

data = {

"operationName": "visionProfileLikePhotoList",
"variables": {
    "pcursor": '',
    "page": "profile"
},
"query": "fragment photoContent on PhotoEntity {\n  id\n  duration\n  caption\n  likeCount\n  viewCount\n  realLikeCount\n  coverUrl\n  photoUrl\n  photoH265Url\n  manifest\n  manifestH265\n  videoResource\n  coverUrls {\n    url\n    __typename\n  }\n  timestamp\n  expTag\n  animatedCoverUrl\n  distance\n  videoRatio\n  liked\n  stereoType\n  profileUserTopPhoto\n  __typename\n}\n\nfragment feedContent on Feed {\n  type\n  author {\n    id\n    name\n    headerUrl\n    following\n    headerUrls {\n      url\n      __typename\n    }\n    __typename\n  }\n  photo {\n    ...photoContent\n    __typename\n  }\n  canAddComment\n  llsid\n  status\n  currentPcursor\n  __typename\n}\n\nquery visionProfileLikePhotoList($pcursor: String, $page: String, $webPageArea: String) {\n  visionProfileLikePhotoList(pcursor: $pcursor, page: $page, webPageArea: $webPageArea) {\n    result\n    llsid\n    webPageArea\n    feeds {\n      ...feedContent\n      __typename\n    }\n    hostName\n    pcursor\n    __typename\n  }\n}\n"

}

1
2
3
4
5
6
7
8
9
发送请求获取的数据为json数据信息转换成字典数据,从中提取出你想要的数据信息,筛选出我们想要的视频标题,以及视频的播放地址,对视频地址发送请求就行,想实现翻页效果需要注意,我们下一页的页面数据是在他上个数据的接口里,提取数据了时候一起提取出来

简易源码分享
import requests

data = {

"operationName": "visionProfileLikePhotoList",
"variables": {
    "pcursor": '',
    "page": "profile"
},
"query": "fragment photoContent on PhotoEntity {\n  id\n  duration\n  caption\n  likeCount\n  viewCount\n  realLikeCount\n  coverUrl\n  photoUrl\n  photoH265Url\n  manifest\n  manifestH265\n  videoResource\n  coverUrls {\n    url\n    __typename\n  }\n  timestamp\n  expTag\n  animatedCoverUrl\n  distance\n  videoRatio\n  liked\n  stereoType\n  profileUserTopPhoto\n  __typename\n}\n\nfragment feedContent on Feed {\n  type\n  author {\n    id\n    name\n    headerUrl\n    following\n    headerUrls {\n      url\n      __typename\n    }\n    __typename\n  }\n  photo {\n    ...photoContent\n    __typename\n  }\n  canAddComment\n  llsid\n  status\n  currentPcursor\n  __typename\n}\n\nquery visionProfileLikePhotoList($pcursor: String, $page: String, $webPageArea: String) {\n  visionProfileLikePhotoList(pcursor: $pcursor, page: $page, webPageArea: $webPageArea) {\n    result\n    llsid\n    webPageArea\n    feeds {\n      ...feedContent\n      __typename\n    }\n    hostName\n    pcursor\n    __typename\n  }\n}\n"

}

headers = {

'accept': '*/*',
'content-type': 'application/json',
'Cookie': '',
'Host': 'www.xxxxxxxxxx.com',
'Origin': 'https://www.xxxxxxxx.com',
'Referer': 'https://www.xxxxxxxx.com/profile/3x382umv98zjz79',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36',

}

url = 'https://www.xxxxxxxx.com/graphql'
res = requests.post(url, headers=headers, json=data)
for i in res.json()'data'['feeds']:

# print(i)
title = i['photo']['caption']
play_url = i['photo']['photoUrl']
res = requests.get(play_url)
# print(res.content)
title = title.replace('#', '').replace('?', '').replace('\n', '')
with open('某短视频/' + title + '.mp4', 'wb')as f:
    f.write(res.content)
    print('正在下载:{}'.format(title))
相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
9月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
9月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
SQL Web App开发 数据采集
Python爬虫采集CloudBlog网站的文章
    本文通过使用python爬虫,来将一个网站中的文章获取下来,包括标题、发表时间、作者、文章内容等基本信息,并且将这些数据存储到数据库中,是一个非常完整的流程。获取首页所有的文章连接,并存放到URL集合中,然后再一个个的访问这些采集到的链接,来访问,并再次解析出文章详细的内容。
1901 0
|
10月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1657 102
|
10月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
505 104

热门文章

最新文章

推荐镜像

更多