通过影刀rpa实现手机小红书养号、自动批量关注

大家好,我是10年码农大兵,目前是一位RPA定制开发者,计划帮忙开发并开源20个RPA机器人项目,如果您有rpa或相关自动化开发需求,欢迎发私信和我交流。
本次开源的RPA项目是:小红书养号、自动关注机器人

需求描述

使用影刀RPA模拟人工在小红书手机app上进行查看推荐的文章或视频,去关注内容中有包含双向奔赴、秒回关、必回等关键字的博主来实现涨粉。全程可24小时自动操作,解放双手

开发环境:

软件:
影刀ShadowBot-5.20.22-x64.exe
设备:
小米手机note3
手机app:
手机小红书8.23.1


功能实现:

影刀新增应用
在这里插入图片描述
选择手机自动化
在这里插入图片描述
新建python模块
在这里插入图片描述
在这里插入图片描述

复制以下的源码到新建的python模块module1.py文件中

# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
from xbot.mobile import appium
from xbot import excel
from datetime import datetime
import random
import os


def contains_any_keyword(s, keywords):
  for keyword in keywords:
    if keyword in s:
      return True
  return False

def viewBook(session):
  print("查看笔记")
  sleep(2)
  #上拉
  session.swipe(500, 1200, 500, 400)
  wait_time = random.randint(3, 8)
  print(f"等待{wait_time}秒")
  sleep(wait_time)
  #关注按钮
  try:
    element = session.find_by_id("com.xingin.xhs:id/followTV")
  except Exception as e:
    print("没有关注按钮")
    session.back()
    return
  gzbtn = element.get_text()
  if(gzbtn == "已关注"):
    print("已关注")
    session.back()
    return
  randInt = random.randint(1,3)
  if(randInt == 3):
    element2 = session.find_by_id("com.xingin.xhs:id/e63")
    username = element2.get_attribute("content-desc")
    print("关注"+username)
    element.click()
    global gzNum
    gzNum = gzNum + 1
    print(f"已关注 {gzNum}")

  sleep(1)
  session.back()

def readLog(filepath):
  number = 0
  # 检查文件是否存在
  if not os.path.exists(filepath):
    # 如果文件不存在,则创建文件并写入0
    with open(filepath, "w") as file:
      file.write("0")
  else:
    # 如果文件存在,则读取文件中的整数,将其设置为100,并写回文件
    with open(filepath, "r") as file:
      number_str = file.read().strip()  # 读取内容并去除前后空白
      try:
        number = int(number_str)  # 尝试将字符串转换为整数
      except ValueError:
        new_number = 0
  return number

def writeLog(filepath,number):
    with open(filepath, "w") as file:
     file.write(str(number))

#今日已经关注人数
gzNum = 0
#最多关注人数
maxGZNum = 100
def main(args):
  logpath = "C:\\小红书日志"
  current_date = datetime.now().strftime("%Y-%m-%d")
  filename = f"{current_date}.txt"
  filepath = os.path.join(logpath, filename)
  if not os.path.exists(logpath):
    os.makedirs(logpath)
    print(f"创建了目录: {logpath}")
  global gzNum
  #今日已经关注人数
  gzNum = readLog(filepath)
  #最多关注人数
  maxGZNum = 100
  if(gzNum >= maxGZNum):
    print("今日已经关注人数达到最大值,退出程序")
    exit()
  session = appium.connect_by_custom_name('Mi Note 3')
  session.open_app("com.xingin.xhs")
  sleep(1)
  while(True):
    #点击首页
    print("刷新首页")
    elements = session.find_all_by_id("com.xingin.xhs:id/i5o")
    element = elements[0]
    element.click()
    sleep(1)
    keywords = ["新人", "奔赴", "双向", "养号", "回关", "秒回", "互助", "关注"]
    maxlen = 3
    for t in range(maxlen):
      elements = session.find_all_by_xpath('/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.widget.LinearLayout/android.widget.RelativeLayout/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.FrameLayout/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.view.ViewGroup/androidx.viewpager.widget.ViewPager/android.widget.FrameLayout/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.FrameLayout')
      for i in range(len(elements)):
        element = elements[i]
        content = element.get_attribute("content-desc")
        if(content.startswith("笔记") == False):
          continue
        if(contains_any_keyword(content, keywords)==False):
          continue

        print(content)
        element.click()
        sleep(2)
        viewBook(session)
        writeLog(filepath,gzNum)
        if(gzNum>= maxGZNum):
          print("今日已经关注人数达到最大值,退出程序")
          exit
      sleep(2)
      #上拉
      session.swipe(500, 1200, 500, 400)
   
      
   

电脑连接手机,修改相关源码的日志路径、当日最多关注人数及要连接的手机设备名称,点击运行
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值