用Python批量爬取快手视频,实现自动关注/点赞/评论

今天来点特别的~

不仅把好看的视频全部pa下来,咱们还要实现自动评论、点赞、关注三连~

宝,你也可以顺手给我个三连吗?给你个摸摸大~

用Python批量爬取快手视频,实现自动关注/点赞/评论

 

 

抓包分析流程

我写成了文档,都在这个PDF里面了,但是好像不能上传,所以点一下大家自行下载吧!
点我获取,提取密码 qwer

开始代码

获取视频的代码

import requests     # 发送请求 第三方模块(第三方应用 pip)
import re


# 伪装
# 1. 选中要替换的代码
# 2. ctrl + R
# 3. 第一个框(.*?): (.*)
# 4. 在第二个框里面输入 '$1': '$2',
# 5. 点击全部替换(* 点亮 * 号)
# Python学习交流群 279199867
headers = {
    'content-type': 'application/json',
    'Cookie': 'kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3; did=web_ea128125517a46bd491ae9ccb255e242; client_key=65890b29; didv=1646739254078; userId=270932146; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABctRgGaXi5efEBpnbdtJMp3nnnXqENRWBoFQABtOr1ZFUNAjEo5NTZ4F0leSypsSFE4_-FGTnBqKEYh8Wcrszm3FGF03559Z9bFQCX_8ew_kLKPWVB9ZRlWQgISoG4-XZXIOqiBgkQKsPbpYKiA3X4_0rMDbo9-c0nWXeOoThekj8W3u7_yfI4fUY3h5WgTEDYT0yrXkZmhWlFV_jpVxDrBoSzFZBnBL4suA5hQVn0dPKLsMxIiCo1i0bY9V6-OVEk7yMnH86RNliTZACHvLPjL9FTHHQOigFMAE; kuaishou.server.web_ph=09735672944cbf9e53431bf3e0514a0d058b',
    'Host': 'www.***.com',
    'Origin': 'https://www.***.com',
    # 防盗链
    'Referer': 'https://www.kuaishou.com/profile/3xhv7zhkfr3rqag',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36',
}
url = 'https://www.***.com/graphql'


def get_page(pcursor):
    # 指定要谁的视频
    data = {
        "operationName": "visionProfilePhotoList",
        "query": "query visionProfilePhotoList($pcursor: String, $userId: String, $page: String, $webPageArea: String) {n  visionProfilePhotoList(pcursor: $pcursor, userId: $userId, page: $page, webPageArea: $webPageArea) {n    resultn    llsidn    webPageArean    feeds {n      typen      author {n        idn        namen        followingn        headerUrln        headerUrls {n          cdnn          urln          __typenamen        }n        __typenamen      }n      tags {n        typen        namen        __typenamen      }n      photo {n        idn        durationn        captionn        likeCountn        realLikeCountn        coverUrln        coverUrls {n          cdnn          urln          __typenamen        }n        photoUrls {n          cdnn          urln          __typenamen        }n        photoUrln        likedn        timestampn        expTagn        animatedCoverUrln        stereoTypen        videoRation        profileUserTopPhoton        __typenamen      }n      canAddCommentn      currentPcursorn      llsidn      statusn      __typenamen    }n    hostNamen    pcursorn    __typenamen  }n}n",
        "variables": {"userId": "3x2vsxyxbbwcjta", "pcursor": pcursor, "page": "profile"}
    }
    # 1. 发送请求  get  post
    response = requests.post(url=url, headers=headers, json=data)
    # <Response [200]>: 请求成功
    # 2. 获取数据 .json() 返回字典类型数据
    # .text: 拿到的就是 文本内容 python数据类型 字符串 > 字典类型 > 键值对(拼音)方式取值
    json_data = response.json()
    # 3. 解析数据
    # 新华字典 = {'A': '啊', 'B': '不', 'C': '从'}
    # 新华字典['B']  python数据容器 存储数据
    # 正则
    feeds = json_data['data']['visionProfilePhotoList']['feeds']
    pcursor = json_data['data']['visionProfilePhotoList']['pcursor']
    for feed in feeds:
        photoUrl = feed['photo']['photoUrl']
        caption = feed['photo']['caption']
        # 正则替换
        # 第一个参数里面是需要替换的一些字符
        # 第二个参数 是把这些字符替换为 空
        # 第三个参数 是需要替换的变量
        # \ : 
        # / : /
        caption = re.sub('[\/:*?"<>|n]', '', caption)
        print(caption, photoUrl)
        # 4. 保存数据  如果你们拿到的链接 就是 视频 或者 音频 或者 图片
        # .content: 获取视频(音频 / 图片) 二进制数据
        video_data = requests.get(photoUrl).content
        # 视频名称
        # wb 以二进制覆盖写入
        with open(f'video/{caption}.mp4', mode='wb') as f:
            f.write(video_data)
    # 递归: 2.出口
    if pcursor == "no_more":
        # 退出?
        return
    # 递归: 1.自己调用自己
    get_page(pcursor)

get_page("")

 

 

自动评论

def post_comment(self, content, photoAuthorId, photoId):
    """
    :param content: 评论内容
    :param photoAuthorId: 该作品的作者id
    :param photoId: 作品id
    :return: 有没有成功
    """
    json = {
        'operationName': "visionAddComment",
        'query': "mutation visionAddComment($photoId: String, $photoAuthorId: String, $content: String, $replyToCommentId: ID, $replyTo: ID, $expTag: String) {  (photoId: $photoId, photoAuthorId: $photoAuthorId, content: $content, replyToCommentId: $replyToCommentId, replyTo: $replyTo, expTag: $expTag) {n    resultn    commentIdn    contentn    timestampn    statusn    __typenamen  }n}n",
        'variables': {
            'content': content,
            'expTag': "1_a/2005158523885162817_xpcwebsearchxxnull0",
            'photoAuthorId': photoAuthorId,
            'photoId': photoId
        }
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

 

自动点赞

def is_like(self, photoId, photoAuthorId):
    """
    :param photoId: 作品id
    :param photoAuthorId: 该作品的作者id
    :return: 有没有成功
    """
    json = {
        'operationName': "visionVideoLike",
        'query': "mutation visionVideoLike($photoId: String, $photoAuthorId: String, $cancel: Int, $expTag: String) {n  visionVideoLike(photoId: $photoId, photoAuthorId: $photoAuthorId, cancel: $cancel, expTag: $expTag) {n    resultn    __typenamen  }n}",
        'variables': {
            'cancel': 0,
            'expTag': "1_a/2005158523885162817_xpcwebsearchxxnull0",
            'photoAuthorId': photoAuthorId,
            'photoId': photoId
        }
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

 

自动关注

def is_follow(self, touid):
    """

    :param touid: 用户id
    :return:
    """
    json = {
        'operationName': "visionFollow",
        'query': "mutation visionFollow($touid: String, $ftype: Int, $followSource: Int, $expTag: String) {n  visionFollow(touid: $touid, ftype: $ftype, followSource: $followSource, expTag: $expTag) {n       followStatusn    hostNamen    error_msgn    __typenamen  }n}n",
        'variables': {
            'expTag': "1_a/2005158523885162817_xpcwebsearchxxnull0",
            'followSource': 3,
            'ftype': 1,
            'touid': touid
        }
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

溜了溜了,今天就到这里,兄弟们快去试试吧!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Python批量爬取快手视频,实现自动关注/点赞/评论 - Python技术站

(0)
上一篇 2023年4月2日 下午5:29
下一篇 2023年4月2日 下午5:29

相关文章

  • python语法到底多精妙?八大核心语句,带你深度了解

    Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for – el…

    Python开发 2023年3月31日
    00
  • Python之字典添加元素

    本文使用代码 book_dict = {“price”: 500, “bookName”: “Python设计”, “weight”: “250g”}   第一种方式:使用[] book_dict[“owner”] = “tyson”   说明:中括号指定key,赋值一个value,key不存在,则是添加元素(如果key已存在,则是修改key对应的value…

    Python开发 2023年3月31日
    00
  • 网易云VIP歌曲没权限?还好我会Python,一分钟一个歌单,硬盘有点不够用了~

    人生苦短,我用Python 人之初,喜白嫖。大家都喜欢白嫖,我也喜欢,那么今天就来试试怎么白嫖抑云~       我不是,我没有,别瞎说~       一、你需要准备 1、环境 Python3.6以上 pycharm2019以上 2、模块 requests # 发送请求模块 第三方模块 exec js # 调用JS的模块   二、效果展示 可以看到,这两个是…

    2023年4月2日
    00
  • Python采集疫情数据,绘制可视化动态地图,实时查询疫情数据!

    疫情尚未结束,我们需要做好自己,时刻防范,不给别人添麻烦。 今天我们来尝试用Python抓取世界疫情,实现可视化地图展示。 话不多说直接开搞! 采集数据 1、数据来源 数据来源于TX新闻,链接展示不了,就只贴图了。     2、模块 import requests import csv # Python学习交流君羊:279199867   requests …

    2023年4月2日
    00
  • Python遇上SQL,于是一个好用的Python第三方库出现了

    1. 演示数据 本文的所有演示数据,均是基于下方的四张表。下面这四张表大家应该不陌生,这就是网传50道经典MySQL面试题中使用到的几张原表。关于下方各表之间的关联关系,我就不给大家说明了,仔细观察字段名,应该就可以发现。 2. pandasql的使用 1)简介 pandas中的DataFrame是一个二维表格,数据库中的表也是一个二维表格,因此在panda…

    Python开发 2023年4月2日
    00
  • 重温Python基础——字符串

    哈喽,兄弟们, 本文带大家复习一下Python基础中的字符串,不知道大家还记得多少内容呢? 字符串 1、字符串就是一系列字符 在python中,用引号括起的都是字符串,其中引号可以是单的,也可以是双的。例如: “i am not happy” ‘i am not happy’   这种灵活性能在字符串中包含引号和撇号,例如: “she told me ‘Py…

    Python开发 2023年4月2日
    00
  • 【Python基础教程】类的定义和使用

    哈喽兄弟们,今天咱们分享一下类的定义和使用。   在Python中,类表示具有相同属性和方法的对象的集合。在使用类时,需要先定义类,然后再创建类的实例,通过类的实例就可以访问类中的属性和方法了。 1、定义类 在Python中,类的定义使用class关键字来实现,语法如下: class ClassName: “”“类的帮助信息”“” # 类文本字符串 stat…

    Python开发 2023年4月2日
    00
  • 重温Python基础——列表

    哈喽,兄弟们,今天让我们一起来重温一下Python基础中的列表,看看你还记得多少呢? 列表是什么 列表有一系列特定顺序排列的元素组成。可以包含字母表中的所有字母,数字等。其中的元素之间可以没有任何联系,列表通常包含多种元素。 在Python中用方括号([])表示列表,用逗号分隔其中的元素。 a=[‘wo’,’ai’,’xue’,’xi’,13,14]   访…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部