python爬取快手视频--json数据分析

本文介绍了一种针对快手平台的视频爬虫实现方法,详细解析了如何从快手主页抓取JSON数据,分析并拼接二级路径,最终访问详情页获取视频信息。分享了使用Python的requests和BeautifulSoup库进行数据抓取和解析的代码示例。
部署运行你感兴趣的模型镜像

打开快手主页,进行页面分析
在这里插入图片描述
对于快手这种平台,分析完页面代码之后,无任何想要的信息,所以,只能进行json数据的抓取,这些视频都是通过json语句传给前段,然后进行循环生成,所以,我们来看抓的json包
在这里插入图片描述
然后进行详情页链接分析
在这里插入图片描述
接下来看json数据
在这里插入图片描述
补充一下,这里由于页面刷新了,所以看到的两个链接不一样,方法就是这样的
然后拼接出来二级路径,进行访问详情页
在这里插入图片描述
最后在详情页按照常规方法进行分析页面爬取数据就行了
分享一下代码

import requests
from bs4 import BeautifulSoup
import json
import time

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
}

def first_get_request(first_request):
    first_data = json.loads(first_request.text)
    print(first_data)
    #进入第二层
    first_two_data = first_data['data']['videoFeeds']['list']
    for num in first_two_data:
        two_url = 'https://live.kuaishou.com/u/' + num['user']['id'] + '/' + num['photoId']
        # print(two_url)
        two_get_request(two_url)


def two_get_request(two_url):
    two_data = requests.get(url=two_url,headers=headers,verify=False)
    soup = BeautifulSoup(two_data.text,'lxml')
    #头像
    name_photo = soup.select('.profile-user img')[0]['src']
    #名字
    name = soup.select('.video-card-footer-user-name')[0].text
    #点赞量
    number = soup.select('.profile-user-count-info > .watching-count')[0].text
    #点心量
    num = soup.select('.profile-user-count-info > .like-count')[0].text
    #内容
    text = soup.select('.profile-user > .profile-user-desc > span')[0].text
    item = {
        '头像':name_photo,
        '名字':name,
        '内容':text,
        '点赞量':number,
        '点心量':num
    }
    with open('爬取的信息.txt','a',encoding='utf8') as f:
        f.write(str(item) + '\n')

   time.sleep(3)

def main():
    first_url = 'https://live.kuaishou.com/graphql'
    formdata = {
        "operationName": "videoFeedsQuery", "variables": {"count": 50, "pcursor": "50"},
        "query": "fragment VideoMainInfo on VideoFeed {\n  photoId\n  caption\n  thumbnailUrl\n  poster\n  viewCount\n  likeCount\n  commentCount\n  timestamp\n  workType\n  type\n  useVideoPlayer\n  imgUrls\n  imgSizes\n  magicFace\n  musicName\n  location\n  liked\n  onlyFollowerCanComment\n  width\n  height\n  expTag\n  __typename\n}\n\nquery videoFeedsQuery($pcursor: String, $count: Int) {\n  videoFeeds(pcursor: $pcursor, count: $count) {\n    list {\n      user {\n        id\n        eid\n        profile\n        name\n        __typename\n      }\n      ...VideoMainInfo\n      __typename\n    }\n    pcursor\n    __typename\n  }\n}\n"
    }
    #访问快手界面
    first_request = requests.post(url=first_url,headers=headers,data=formdata,verify=False)
    #分析首页链接
    first_get_request(first_request)

if __name__ == '__main__':
    main()

最后就找到了我们想要的东西,

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值