评论区回赞--python


前言

适用需求:给自己的视频评论区回赞,包括折叠评论。

在这里插入图片描述


一、利用selenium模拟登录获取cookie

为什么要获取cookie?
在本地浏览器中存放着代表你个人身份的cookie信息,有了它就可以模拟已登录用户访问网站进行点赞。
cookie存在时效性,不同的网站不同类型的cookie的过期时间都可能不同。so,–>定期更新cookie

#获取cookie
def hq_cookie():
    weba = webdriver.Chrome() #造个浏览器
    weba.maximize_window() #最大化窗口
    weba.get('b站网站')
    weba.delete_all_cookies() #先删除所有cookie
    time.sleep(50) #代码停下来50秒,等你登录
    dictcookies = weba.get_cookies() #获取登录后的cookie(字典格式)
    weba.quit() #关闭浏览器
    return dictcookies #返回cookie

二、登录

接收 hq_cookie()返回的cookie后
去掉cookie字典–键(key)中的带有expiry的键值对,然后添加cookie到浏览器中进行登录。
注意:
在添加cookie前要先访问对应网站。

如果因为某些原因在第一步中50秒内你没有登录b站,导致没有得到cookie信息那么就需要重新登录(重新执行hq_cookie函数)。

#首次登录
def dl(cookies):
    #登录
    url="https://www.bilibili.com"
    webd.get(url)
    for cookie in cookies:
        if 'expiry' in cookie:
            del cookie['expiry']
    for cookie in cookies:
        webd.add_cookie(cookie)
    webd.get(url)

#登录失败后重新登录
def dl2(cookies):
    webd.close() #关闭多余窗口
    webd.switch_to.window(webd.window_handles[-1])
    for cookie in cookies:
        if 'expiry' in cookie:
            del cookie['expiry']
    for cookie in cookies:
        webd.add_cookie(cookie)
    webd.refresh() #刷新页面,进入登录状态

三、点赞

用一个列表获取存放的你所有要访问的视频链接,如果没有输入链接会直接结束程序
访问到视频网站后(利用xpath定位元素)打开评论区所有评论后开始点赞,点赞过程中发现未登录会中断点赞函数回到第一步进行重新登录。

点赞过程中注意设置间隔时间。


#开始点赞
def jxdl():
    u = []
    # 使用循环来输入链接
    while True:
        link = input("请输入链接(输入'q'退出):")
        if link == 'q':
            break
        u.append(link)
    print("输入成功:", u)
    if not u:
        print("无链接输入,程序结束!")

    for url in u:
        #访问视频后切窗口
        webd.execute_script(f"window.open('{url}', 'new_window')")
        webd.switch_to.window(webd.window_handles[-1])
        time.sleep(5)

       #打开折叠评论
        mor = webd.find_elements(By.XPATH, "//span[@class='view-more-btn']")
        print("需要打开的评论数量",len(mor))

        #通过循环来遍历所有元素进行点击操作打开评论区
        for i in range(0, len(mor)):
            element = mor[i]
            # element是一个div类型元素,不能直接element.click(),要用JavaScript模拟点击
            webd.execute_script("arguments[0].click();", element)
            #休息几秒
            sleep_time = random.uniform(4, 6)
            time.sleep(sleep_time)


        print("准备点赞")
        time.sleep(3)
        # svg-icon like use-color like-icon
        #获取所有sub-like评论点赞键
        z = webd.find_elements(By.XPATH, "//i[@class='svg-icon like use-color sub-like-icon']")
        #获取首评评论点赞键
        ss = webd.find_elements(By.XPATH, "//i[@class='svg-icon like use-color like-icon']")
        s = 1
        print("首评点赞:", len(ss))
        print("回复评论点赞:", len(z))
       

        if ss:
            for i in range(0, len(ss)):
                # 挨个对列表中的元素进行点击操作
                element = ss[i]
                # element是一个div类型元素,不能直接element.click(),要用JavaScript模拟点击
                webd.execute_script("arguments[0].click();", element)
                sleep_time = random.uniform(4, 6)
                time.sleep(sleep_time)
                if s == 1:  #如果之前登录了有cookie信息且cookie信息有效那么就会循环多次,s的值不等于1
                    k = webd.find_elements(By.XPATH, "//div[@class='login-tab-item active-tab']")
                    if k:
                        print("请先登录")
                        cookies = hq_cookie()
                        dl2(cookies)
                        jxdl()
                        return
                s = s + 1

            time.sleep(1)
            for i in range(0, len(z)):
                # 挨个对列表中的元素进行点击操作
                element = z[i]
                # element是一个div类型元素,不能直接element.click(),要用JavaScript模拟点击
                webd.execute_script("arguments[0].click();", element)
                sleep_time = random.uniform(4, 6)
                time.sleep(sleep_time)
            webd.close()
            webd.switch_to.window(webd.window_handles[-1])
            print("该视频点赞结束")


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋刀鱼_(:з」∠)_别急

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值