
该项目出于一客户简单需求做的,不值几个钱,使用selenium创建浏览器对象,实现模拟人工操作,对某手视频自动搜索相关视频,并发表准备好的评论文案。
上代码:
import random
import time
import tkinter as tk
from selenium.webdriver.common.by import By
from selenium import webdriver
class SimpleApp:
"""
定义一个简单的GUI应用程序类,该类初始化一个包含标签和按钮的窗口。
:param master: 父窗口对象,用于创建应用程序窗口。
"""
def __init__(self, master):
"""
初始化SimpleApp类实例。
:param master: 父窗口对象。
"""
self.master = master
self.master.title("闪马爬虫测试程序 B1.0") # 设置窗口标题
# 创建并显示一个欢迎标签
self.label = tk.Label(master, text="欢迎测试快手自动评论程序")
self.label.pack(pady=10) # 使用pack布局管理器放置标签
# 创建一个按钮,并为其绑定点击事件处理函数
self.button = tk.Button(master, text="点击我开始运行!", command=self.on_button_click)
self.button.pack(pady=10) # 使用pack布局管理器放置按钮
def on_button_click(self):
"""
按钮点击事件处理函数,用于更改标签文本。
"""
self.label.config(text="正在启动中!") # 更新标签文本,以响应按钮点击
my_list = ['时代真好啊,以前穷人哪有得边吃雅垄牦牛鞭边看这些。', '拒绝女色?拒绝个屁,我就爱吃雅垄牦牛鞭看美女!',
'我可以喊换一批不?吃块雅垄牛肉干压压惊,八嘎。',
'大家都让开,让我用英语来撩她。Hello,hua gu niang! chi bu chi yalong mao niu bian。,'
'雅垄风干牛肉香,风韵独特滋味长。精挑肉品匠心制,回味无穷韵悠扬。',
'雅垄牛肉干,是味觉的盛宴,是回忆的馈赠。每一块牛肉干,都承载着匠心独运的烹饪技艺和严谨挑剔的选材标准。选用优质藏区牛后腿肉,经过精心切割,保留了牛肉原有的纹理和口感。在藏家的秘制配方熏陶下,牛肉干经过慢火烘烤,肉质紧实而不失嚼劲,香气四溢,令人垂涎欲滴。',
'天苍苍野茫茫,吃着雅垄(风干牛肉)看牛羊。', '耐嚼风干牛肉藏区特产还得是雅垄牌',
'高原原产,雅垄风干牛肉更耐撕耐嚼更香。']
self.options = webdriver.ChromeOptions()
self.options.add_experimental_option('excludeSwitches', ['enable-automation'])
self.options.add_argument("--disable-blink-features=AutomationControlled")
# self.options.add_argument('--headless')
# 静音模式
self.options.add_argument('--mute-audio')
# 创建浏览器对象driver
self.driver = webdriver.Chrome(options=self.options)
self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => false
})
"""})
self.driver.get('https://www.kuaishou.com')
self.driver.maximize_window() # 窗口最大化
time.sleep(2)
# 点击登录按钮
self.driver.find_element(By.CLASS_NAME, 'user-default').click()
time.sleep(1)
# 定位手机号
self.driver.find_element(By.XPATH,
'//*[@id="app"]/div[2]/div/div/div/div/div[1]/div/div[1]/div/input').send_keys(
'17888098666')
# 点击获取验证码
self.driver.find_element(By.XPATH,
'//*[@id="app"]/div[2]/div/div/div/div/div[1]/div/div[2]/div/div/span').click()
time.sleep(2)
# 输入手机收到的验证码
self.verification = input('请输入验证码:')
# 将验证码输入网页
self.driver.find_element(By.XPATH,
'//*[@id="app"]/div[2]/div/div/div/div/div[1]/div/div[2]/div/input').send_keys(
str(self.verification))
# 点击登录按钮
self.driver.find_element(By.XPATH, '//*[@id="app"]/div[2]/div/div/div/div/div[1]/div/button').click()
time.sleep(2)
# 定位搜索框 输入关键字
self.driver.find_element(By.CLASS_NAME, 'search-input').send_keys('热舞')
# 点击搜索按钮
self.driver.find_element(By.CLASS_NAME, 'search-button').click()
time.sleep(3) # 进入第一个视频
self.driver.find_element(By.XPATH,
'//*[@id="app"]/div[1]/section/div/div/div[1]/div/div[2]/div[1]/div/div[1]/div['
'1]').click()
time.sleep(3)
for i in range(1, 10000):
# 取评论列表中随机内容
my_random = random.choice(my_list)
# 输入评论内容
self.driver.find_element(By.XPATH, '//*[@id="app"]/div[1]/section/div/div/div/div[2]/div[1]/div[2]/div['
'1]/div/textarea').send_keys(f'{my_random}')
time.sleep(1)
# 发送评论
self.driver.find_element(By.XPATH, '//*[@id="app"]/div[1]/section/div/div/div/div[2]/div[1]/div[2]/div['
'1]/div/button').click()
print(f'成功评论第{i}条视频。该条评论内容为:' + my_random)
time.sleep(5)
# 点击进去下一条
self.driver.find_element(By.XPATH,
'//*[@id="app"]/div[1]/section/div/div/div/div[1]/div[2]/div[2]/div[2]').click()
time.sleep(2)
def main():
"""
主程序入口,创建GUI应用程序实例并启动主事件循环。
无参数和返回值。
"""
root = tk.Tk() # 创建Tkinter的主窗口对象
root.geometry('500x200')
app = SimpleApp(root) # 实例化SimpleApp类,初始化应用程序窗口
root.mainloop() # 运行主事件循环,等待用户交互
if __name__ == "__main__":
main()
评论前必须登录!
注册